Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Область видимості локальних, глобальних і нелокальних змінних | Variable Scope, Nested Functions, and Closures
Середній Рівень Python

Область видимості локальних, глобальних і нелокальних змінних

Свайпніть щоб показати меню

Розуміння того, як 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?

question mark

Що робить ключове слово nonlocal у Python?

Виберіть правильну відповідь

question mark

Що таке правило LEGB?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 3. Розділ 1
some-alt