Sobes.tech
Back to questions
Junior — Middle
62

Как осуществляется поиск переменной в различных областях видимости в Python?

Answer from AI

sobes.tech AI

В Python поиск переменной происходит по правилу LEGB, которое обозначает области видимости в следующем порядке:

  • L (Local) — локальная область функции или метода.
  • E (Enclosing) — область видимости внешних (вложенных) функций.
  • G (Global) — глобальная область текущего модуля.
  • B (Built-in) — встроенные имена Python.

Когда интерпретатор встречает имя переменной, он ищет её сначала в локальной области, если не находит — переходит к внешним функциям, затем к глобальной области и, наконец, к встроенным именам. Если переменная не найдена нигде, возникает ошибка NameError.

Пример:

x = 'global'

def outer():
    x = 'enclosing'
    def inner():
        x = 'local'
        print(x)  # Выведет 'local'
    inner()
    print(x)      # Выведет 'enclosing'

outer()
print(x)          # Выведет 'global'