Область видимості локальних, глобальних і нелокальних змінних
Свайпніть щоб показати меню
Розуміння того, як Python визначає область видимості змінних, є ключовим для написання зрозумілого та безпомилкового коду. Python використовує певний набір правил, відомий як LEGB rule, щоб вирішити, де шукати значення змінної. LEGB розшифровується як Local, Enclosing, Global, and Built-in. Коли ви звертаєтеся до змінної, Python шукає її значення у такому порядку:
- Local: змінні, визначені у поточній функції або методі;
- Enclosing: змінні у найближчій зовнішній області функції (якщо використовуються вкладені функції);
- Global: змінні, визначені на верхньому рівні модуля або оголошені як global за допомогою ключового слова
global; - Built-in: імена, які попередньо визначені у Python, наприклад,
lenабоrange.
Це правило дозволяє Python ефективно знаходити імена змінних і допомагає передбачити, звідки буде взято значення змінної. Іноді може виникнути потреба змінити змінні поза поточною областю функції. Python надає для цього два ключових слова: global і nonlocal. Ключове слово global дозволяє присвоїти значення змінній на рівні модуля, а nonlocal — змінити змінну у найближчій зовнішній області функції, яка не є глобальною.
123456789101112131415161718# Global scope global_var = "I am global" def outer(): # Enclosing scope enclosing_var = "I am enclosing" def inner(): # Local scope local_var = "I am local" print("Local:", local_var) print("Enclosing:", enclosing_var) # Found in enclosing scope print("Global:", global_var) # Found in global scope print("Built-in:", len([1, 2, 3])) # 'len' comes from built-in scope inner() outer()
- Змінна
global_varвизначена в глобальній області видимості та доступна з будь-якого місця в модулі; - Усередині функції
outerзміннаenclosing_varстворює вкладену область видимості, яка доступна для вкладених функцій; - Вкладена функція
innerвизначаєlocal_var, яка існує лише в межах цієї функції та демонструє доступ до змінних з усіх вкладених областей видимості; - Функція
lenвикористовується для демонстрації того, як Python отримує імена з вбудованої області видимості.
Це показує, як Python знаходить значення змінних, послідовно шукаючи їх у локальній, вкладеній, глобальній та вбудованій областях видимості, що робить розв'язання імен змінних передбачуваним та організованим.
1. Що робить ключове слово nonlocal у Python?
2. Що таке правило LEGB?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат