Sobes.tech
Back to questions
Junior — Middle
67

Можешь перечислить основные пространства имен в Python и объяснить их назначение?

Answer from AI

sobes.tech AI

В Python существуют три основных пространства имен, которые определяют область видимости объектов:

  1. Локальное пространство имен (Local Namespace) — содержит имена, определённые внутри текущей функции или метода. Эти имена доступны только в пределах этой функции.

  2. Область видимости вложенных функций (Enclosing Namespace) — это пространство имен внешних функций, если функция вложена в другую функцию. Позволяет вложенной функции обращаться к переменным внешней функции.

  3. Глобальное пространство имен (Global Namespace) — содержит имена, определённые на уровне модуля (файла). Доступно во всём модуле.

  4. Встроенное пространство имен (Built-in Namespace) — содержит имена встроенных функций и исключений Python, например, print(), len(), Exception.

При поиске имени Python проверяет пространства имен в порядке LEGB (Local, Enclosing, Global, Built-in).

Пример:

x = 'глобальный'

def outer():
    x = 'внешний'
    def inner():
        x = 'локальный'
        print(x)  # Выведет 'локальный'
    inner()
    print(x)  # Выведет 'внешний'

outer()
print(x)  # Выведет 'глобальный'