Функции и области видимости: ключевое слово global
Надеемся, теперь Вы должны прийти к следующему вопросу: означает ли это, что функция не может изменять переменную, определенную вне ее? Это создало бы сильный дискомфорт.
К счастью, ответ - нет.
Существует специальный метод Python, который может расширить область видимости переменной, включив в нее тело функции (даже если Вы хотите не только читать значения, но и изменять их).
Такой эффект вызывается ключевым словом с именем global
:
global name
global name1, name2, ...
Использование этого ключевого слова внутри функции с именем (или именами, разделенными запятыми) переменной (или переменных) заставляет Python воздерживаться от создания новой переменной внутри функции - вместо нее будет использоваться переменная, доступная извне.
Другими словами, это имя становится глобальным (оно имеет глобальную область видимости, и не имеет значения, является ли оно объектом чтения или записи).
Посмотрите на код в редакторе.
Мы добавили в функцию global
.
Сейчас код выводит:
Do I know that variable? 2
2
output
Этого должно быть достаточно, чтобы показать, что ключевое слово global
выполняет то, что обещает.