Область видимости переменных (scope)
Где переменная «видна» и живёт: внутри функции или во всей программе. Разберём на примерах.
Локальные переменные
Переменная, созданная внутри функции, локальная: она существует только пока функция работает, и снаружи её не видно. Это удобно — функции не мешают друг другу, даже если используют одинаковые имена.
def f():
x = 10 # локальная
print(x)
f()
# print(x) — здесь ошибка
Глобальные переменные
Переменная, объявленная вне функций, глобальная — её видно во всей программе, в том числе для чтения внутри функций. Менять глобальную переменную из функции без ключевого слова global не получится — создастся новая локальная.
Почему это важно
Понимание области видимости избавляет от загадочных багов «переменная не определена» или «значение не поменялось». Общий совет: передавайте данные в функцию через параметры и возвращайте через return, а не через глобальные переменные — так код понятнее.
Частые вопросы
Почему изменение в функции не видно снаружи? Внутри создалась локальная переменная, глобальная осталась прежней.
Что делает слово global? Позволяет функции менять именно глобальную переменную, а не заводить локальную.
Начать игру бесплатно