Пространство имен

Пространство имен (или namespace) в Python - это место, где хранятся имена переменных, функций, классов и других объектов. Каждый объект в Python находится в каком-то пространстве имен, и пространства имен используются для разделения и управления именами в программе. В Python существует несколько различных видов пространств имен:

  1. Встроенное пространство имен (Built-in Namespace): В этом пространстве имен содержатся встроенные в Python имена, такие как print(), len(), int(), str() и другие. Эти имена доступны из любой части программы без необходимости импортирования.

  2. Глобальное пространство имен (Global Namespace): Глобальное пространство имен создается, когда вы определяете переменные, функции или классы на верхнем уровне файла. Эти имена видны из любой части программы после их определения и доступны внутри функций.

  3. Локальное пространство имен (Local Namespace): Локальное пространство имен создается при входе в функцию. В нем содержатся имена, определенные внутри функции, и они видны только внутри этой функции.

  4. Пространства имен модулей (Module Namespace): Каждый модуль в Python имеет свое собственное пространство имен. Имена, определенные в модуле, видны только в этом модуле и могут быть доступны после импорта.

  5. Пространства имен классов (Class Namespace): Каждый класс также имеет свое пространство имен для хранения атрибутов класса и методов.

Примеры использования пространств имен:

# Глобальное пространство имен
global_variable = 10

def my_function():
    # Локальное пространство имен
    local_variable = 5
    print(global_variable)  # Доступ к глобальной переменной

# Имена встроенных функций доступны из любого пространства имен
length = len("Hello")

# Пространство имен модуля
# Модуль mymodule.py
# Имя "module_variable" будет доступно после импорта модуля
module_variable = 42

# Пространство имен класса
class MyClass:
    class_variable = 100

    def __init__(self):
        self.instance_variable = 50

# Доступ к именам в пространствах имен
obj = MyClass()
print(obj.class_variable)  # Доступ к атрибуту класса
print(obj.instance_variable)  # Доступ к атрибуту экземпляра

Last updated