Module (43%)
Section (60%)

Функции и области видимости: ключевое слово global

Надеемся, теперь Вы должны прийти к следующему вопросу: означает ли это, что функция не может изменять переменную, определенную вне ее? Это создало бы сильный дискомфорт.

К счастью, ответ - нет.

Существует специальный метод Python, который может расширить область видимости переменной, включив в нее тело функции (даже если Вы хотите не только читать значения, но и изменять их).

Такой эффект вызывается ключевым словом с именем global:

global name global name1, name2, ...

Использование этого ключевого слова внутри функции с именем (или именами, разделенными запятыми) переменной (или переменных) заставляет Python воздерживаться от создания новой переменной внутри функции - вместо нее будет использоваться переменная, доступная извне.

Другими словами, это имя становится глобальным (оно имеет глобальную область видимости, и не имеет значения, является ли оно объектом чтения или записи).


Посмотрите на код в редакторе.

Мы добавили в функцию global.

Сейчас код выводит:

Do I know that variable? 2 2

output


Этого должно быть достаточно, чтобы показать, что ключевое слово global выполняет то, что обещает.


Code

def my_function():
global var
var = 2
print("Do I know that variable?", var)


var = 1
my_function()
print(var)
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×