Глобальная переменная в Python
KOD
Введение
Ключевое слово global в Python объявляет одну или несколько переменных глобальными. Этот оператор используется только в функциях.
По умолчанию переменные, объявленные в функции, являются локальными переменными, то есть доступ к ним возможен только в той функции, в которой они были созданы.
Использование локальных переменных
def hello_user():
name = "Egor"
print(f"hello {name}")
hello_user()
print(f"hi {name}")
Выходные данные:
hello Egor
NameError: name 'name' is not defined
Пытаясь получить доступ к переменной, которая была создана внутри функции (локальная переменная) вне функции, вы получаете ошибку NameError, потому что эта переменная не известна в глобальной области видимости.
В программировании может потребоваться обращение к локальной переменной в глобальном масштабе, и это становится возможным в Python с помощью глобального оператора.
Глобальная переменная в функции
Для создания глобальной переменной в функции мы используем оператор global:
def hello_user():
global name
name = "Egor"
print(f"hello {name}")
hello_user()
print(f"hi {name}")
Выходные данные:
hello Egor
hi Egor
Обратите внимание, что без global name строка print(f»hi {name}») привела бы к ошибке.
Изменение глобальной переменной в функции
В Python по умолчанию можно получить доступ к глобальным переменным внутри функций, но не изменять их. Глобальный оператор делает работу, позволяя функциям модифицировать значения глобальных переменных в их локальной области видимости.
Пример попытки модификации глобальной переменной в функции:
a = 1
def plus_one():
a = a + 1
print(a)
plus_one()
Выходные данные:
UnboundLocalError: local variable 'a' referenced before assignment
Используемый оператор global для исправления ошибки доступа к переменной
a = 1
def plus_one():
global a
a = a + 1
print(a)
plus_one()
Выходные данные:
2
Обратите внимание, что глобальная переменная a не создает новую глобальную переменную a, поскольку она уже существует. Она только предоставляет функции доступ к переменной a для модификации или использования.