Ответ
Пространство имен (namespace) в Python — это система, которая обеспечивает уникальность имен объектов (переменных, функций, классов). Ее основная задача — избежать конфликтов имен, когда разные объекты случайно получают одинаковые идентификаторы.
Технически, это словарь, где ключами являются имена, а значениями — сами объекты.
Виды пространств имен
Python использует несколько пространств имен, и поиск имени идет в следующем порядке (правило LEGB):
- L (Local) — Локальное: имена внутри текущей функции.
- E (Enclosing) — Замыкающее: имена во внешних функциях (для вложенных функций).
- G (Global) — Глобальное: имена на уровне модуля.
- B (Built-in) — Встроенное: предопределенные имена в Python (
print,len,strи т.д.).
Пример
x = "global_x" # Глобальное пространство имен (G)
def outer_func():
y = "enclosing_y" # Замыкающее пространство имен (E)
def inner_func():
z = "local_z" # Локальное пространство имен (L)
print(z) # Найдено в L
print(y) # Найдено в E
print(x) # Найдено в G
print(len(x)) # len найдено в B (Built-in)
inner_func()
outer_func()
Каждый модуль в Python создает свое собственное глобальное пространство имен, что позволяет использовать одинаковые имена функций или переменных в разных файлах без конфликтов.