Back to questions
Junior — Middle
64
Каким образом реализована зона доступа переменных и функций в Python?
Answer from AI
sobes.tech AI
В Python область видимости переменных и функций определяется с помощью правил LEGB (Local, Enclosing, Global, Built-in):
- Local (локальная) — переменные, объявленные внутри функции или метода.
- Enclosing (вложенная) — переменные из объемлющих (внешних) функций, если функция вложена.
- Global (глобальная) — переменные, объявленные на уровне модуля.
- Built-in (встроенная) — имена встроенных функций и переменных Python.
При обращении к имени Python ищет его в этой последовательности. Для изменения области видимости внутри функции можно использовать ключевые слова global (для изменения глобальной переменной) и nonlocal (для изменения переменной из объемлющей функции).
Пример:
x = 10 # глобальная переменная
def outer():
y = 5 # enclosing
def inner():
nonlocal y
y += 1
print(y) # обращение к enclosing
inner()
print(y)
outer()
print(x)