Пространство имен
1. Что такое пространство имён
Пространство имён — это контейнер, который сопоставляет имена переменных с объектами (значениями).
Оно отвечает за видимость и область действия переменных.
В Python есть несколько уровней пространства имён:
Local (локальное)
Внутри функции или метода
Переменные внутри функции
Enclosing (вложенное)
Внутри внешней функции (если есть вложенные функции)
Замыкания (closures)
Global (глобальное)
На уровне модуля
Переменные в файле Python
Built-in (встроенное)
Встроенные функции и объекты Python (len
, print
)
Python standard library
2. Пример
x = "глобальная переменная"
def outer():
x = "внешняя переменная"
def inner():
x = "локальная переменная"
print(x) # ищет сначала локальное пространство
inner()
print(x) # внешнее пространство
outer()
print(x) # глобальное пространство
Вывод:
локальная переменная
внешняя переменная
глобальная переменная
3. Ключевые моменты
global
— позволяет использовать и изменять глобальную переменную внутри функции:
x = 5
def modify_global():
global x
x += 1
modify_global()
print(x) # 6
nonlocal
— позволяет изменять переменную из внешней функции:
def outer():
x = 10
def inner():
nonlocal x
x += 5
inner()
print(x) # 15
outer()
4. Применение в автотестах
Фикстуры и конфигурации тестов — глобальные переменные или параметры модуля.
Локальные переменные в функциях теста — чтобы не влиять на другие тесты.
Избежание конфликтов имён — важно в больших проектах, когда много тестовых модулей.
CONFIG = {"url": "https://example.com"} # глобальное пространство
def test_login():
username = "user1" # локальное пространство
password = "123"
assert login(CONFIG["url"], username, password)
💡 Вывод:
Пространства имён — это способ управлять видимостью переменных.
Python использует LEGB-последовательность для поиска значения переменной.
global
иnonlocal
позволяют явно управлять областями видимости.
Last updated
Was this helpful?