Олег Марков
Как работает область видимости переменных в Python
Введение
Понимание области видимости переменных в Python — ключевой аспект для правильной работы с функциями и классами. Область видимости определяет, какие переменные доступны в текущем контексте, а какие — нет.
В этой статье мы разберемся, как работает область видимости в Python, какие типы областей существуют и как правильно управлять переменными для предотвращения ошибок.
Если вы хотите детальнее изучить работу с переменными и областью видимости в Python — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Типы области видимости
Python использует правило LEGB для поиска переменных:
- L (Local) — локальная область функции.
- E (Enclosing) — область внешней функции, если используется вложенная функция.
- G (Global) — глобальная область модуля.
- B (Built-in) — встроенные переменные Python (
len,rangeи др.).
Пример локальной области
def func():
x = 10 # локальная переменная
print(x)
func() # 10
# print(x) # Ошибка, x не определена в глобальной областиПример глобальной области
y = 20 # глобальная переменная
def func():
print(y)
func() # 20Вложенные функции и Enclosing
def outer():
a = 5
def inner():
print(a) # доступ к enclosing области
inner()
outer() # 5Изменение глобальных переменных
Для изменения глобальной переменной внутри функции используется global:
counter = 0
def increment():
global counter
counter += 1
increment()
print(counter) # 1Частые ошибки
- Попытка изменить глобальную переменную без
global. - Использование локальных переменных до их определения.
- Перезапись встроенных функций Python (
len,sumи др.).
Часто задаваемые вопросы
Можно ли обращаться к переменной из внешней функции без передачи аргументов? Да, вложенные функции могут использовать переменные enclosing области.
Что делать, если нужно сохранить значение между вызовами функции? Используйте глобальные переменные, mutable объекты, или замыкания.
Можно ли изменить встроенную функцию? Технически можно, но это крайне не рекомендуется, так как нарушает поведение языка.
Заключение
Понимание области видимости позволяет правильно управлять переменными, избегать конфликтов и писать чистый код. Знание правил LEGB помогает работать с вложенными функциями, глобальными и локальными переменными безопасно.
Для системного изучения работы с переменными и их областью видимости рекомендую пройти курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев