В Python ключевое слово global позволяет изменять переменную за пределами текущей области видимости. Оно используется для создания глобальной переменной и внесения в нее изменений в локальном контексте.
Изменение глобальной переменной в Python
Сначала попробуем получить доступ к глобальной переменной внутри функции:
1 2 3 4 5 6 |
c = 1 # глобальная переменная def add(): print(c) add() |
Результат:
1
Здесь мы получили доступ к глобальной переменной внутри функции. Однако, если мы попытаемся изменить глобальную переменную внутри функции следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
# Глобальная переменная c = 1 def add(): # Увеличиваем значение переменной c c = c + 2 print(c) add() |
Результат:
UnboundLocalError: local variable 'c' referenced before assignment
Это связано с тем, что мы можем получить доступ только к глобальной переменной, но не можем изменить ее внутри функции. Решением является использовать ключевое слово global
. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Глобальная переменная c = 1 def add(): # Используем ключевое слово global global c # Увеличиваем значение переменной c c = c + 2 print(c) add() |
Результат:
3
Здесь мы использовали ключевое слово global
с переменной с
внутри функции add(). При вызове функции add() значение глобальной переменной с
изменилось с 1 на 3.
Использование ключевого слова global во вложенных функциях
В Python мы также можем использовать ключевое слово global
во вложенных функциях. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def outer_function(): num = 20 def inner_function(): global num num = 25 print("Before calling inner_function(): ", num) inner_function() print("After calling inner_function(): ", num) outer_function() print("Outside both function: ", num) |
Результат:
Before calling inner_function(): 20
After calling inner_function(): 20
Outside both function: 25
Здесь мы объявили переменную num
как global
внутри вложенной функции inner_function(). На переменную num
во внешней функции outer_function() ключевое слово global
никак не влияет. До и после вызова inner_function() переменная num
является локальной переменной со значением 20, поскольку все действия выполняются в локальной области видимости функции.
А уже после завершения выполнения функции outer_function() мы переходим в глобальную область видимости, где переменная num
принимает значение, определенное в функции inner_function(), т.е. num = 25
. Это связано с тем, что мы использовали ключевое слово global
.
Правила использования ключевого слова global
Когда мы создаем переменную внутри функции, она по умолчанию становится локальной переменной.
Когда мы создаем переменную вне функции, она по умолчанию становится глобальной переменной. Вам не нужно дополнительно использовать для этого ключевое слово global
.
Ключевое слово global
используется для создания глобальной переменной внутри функции.
Использование ключевого слова global
вне функции не даст никакого эффекта.