Middle+
44
questionbank

Как происходит размещение пространств имен в Python?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Пространства имен в Python организованы иерархически и управляются правилом LEGB (Local, Enclosing, Global, Built-in).

  1. Local (Локальное): Самое внутреннее пространство имен. Создается при вызове функции и содержит имена, определенные внутри этой функции (переменные, локальные функции). Существует только во время выполнения функции.

    python
  2. Enclosing (Окружающее/Нелокальное): Создается для вложенных функций. Содержит имена из объемлющей (родительской) функции, которые не являются локальными для внутренней функции. Используется ключевое слово nonlocal.

    python
  3. Global (Глобальное): Пространство имен на уровне модуля. Содержит имена, определенные в самом модуле (функции, классы, переменные). Доступно из любой части модуля. Создается при импорте модуля.

    python
  4. Built-in (Встроенное): Самое внешнее пространство имен. Содержит встроенные функции и исключения Python (print, len, Exception и т.д.). Доступно из любой точки программы.

Python ищет имя, начиная с локального пространства имен, затем переходит на уровень выше в окружающее, затем в глобальное, и, наконец, в builtin. Если имя не найдено, вызывается NameError.

Пространства имен представлены словарями, ключами которых являются имена объектов, а1 значениями — сами объекты.

python