Область видимости переменных (scope)

Где переменная «видна» и живёт: внутри функции или во всей программе. Разберём на примерах.

Локальные переменные

Переменная, созданная внутри функции, локальная: она существует только пока функция работает, и снаружи её не видно. Это удобно — функции не мешают друг другу, даже если используют одинаковые имена.

def f():
    x = 10   # локальная
    print(x)
f()
# print(x) — здесь ошибка

Глобальные переменные

Переменная, объявленная вне функций, глобальная — её видно во всей программе, в том числе для чтения внутри функций. Менять глобальную переменную из функции без ключевого слова global не получится — создастся новая локальная.

Почему это важно

Понимание области видимости избавляет от загадочных багов «переменная не определена» или «значение не поменялось». Общий совет: передавайте данные в функцию через параметры и возвращайте через return, а не через глобальные переменные — так код понятнее.

Частые вопросы

Почему изменение в функции не видно снаружи? Внутри создалась локальная переменная, глобальная осталась прежней.

Что делает слово global? Позволяет функции менять именно глобальную переменную, а не заводить локальную.

Начать игру бесплатно