Sobes.tech
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)