Какие пространства имен существуют в Python?
В Python существуют несколько типов пространств имен: пространство имен модуля, пространство имен функции, встроенное пространство имен и нелокальное (enclosing) пространство имен. Они определяют область видимости имен и порядок их поиска. Понимание пространств имен важно для избегания конфликтов имен и правильной организации кода.
1. Пространство имен модуля (module namespace)
Каждый модуль в Python имеет свое собственное пространство имен, где определены его функции, классы, переменные и другие объекты. Переменные, определенные в модуле, доступны только внутри этого модуля. Например:
Здесь variable и function являются членами пространства имен модуля example.
2. Пространство имен функции (function namespace)
В Python каждая функция при вызове создает отдельное пространство имен, которое включает все локальные переменные, определенные внутри функции, а также ее аргументы. Эти переменные доступны только внутри данной функции и не могут быть использованы за ее пределами, что обеспечивает изоляцию и предотвращает нежелательные конфликты имен.
3. Встроенное пространство имен (built-in namespace)
Это пространство имен, которое содержит все встроенные функции, классы и объекты Python, такие как print, len, int и другие. Они доступны в любом месте кода Python без необходимости импортирования.
4. Нелокальное пространство имен (enclosing или nonlocal)
Создается, когда функции определены внутри других функций. Для вложенных функций пространство имён внешней функции выступает промежуточным уровнем и позволяет внутренней функции видеть имена внешней функции.
Отметьте свой прогресс