global
для переменной, которая не была инициализирована в глобальной области видимости до вызова функции, то при первом присваивании значения этой переменной внутри функции, она будет создана как глобальная переменная. То есть, global
позволяет функции работать с переменной, существующей вне ее области видимости, даже если эта переменная еще не определена в глобальной области на момент определения функции.
Если в функции использовать ключевое слово global
для переменной, которая до этого не была инициализирована в глобальной области видимости, произойдет следующее:
print(x)
) до присвоения, возникнет исключение NameError
. Python сначала попытается найти переменную в локальной области видимости функции. Если её там нет, а используется global
, то Python поймёт, что переменная должна быть глобальной. Но поскольку переменная не определена в глобальной области видимости *до* ее использования в функции, будет выброшено исключение.x = 10
) после объявления global x
, то переменная будет создана в глобальной области видимости. То есть, Python создаст новую глобальную переменную с указанным именем. После выполнения функции, глобальная переменная будет доступна для использования вне функции.Пример 1 (Ошибка NameError):
def my_func():
global x
print(x) # Ошибка NameError: name 'x' is not defined
x = 10
my_func()
Пример 2 (Создание глобальной переменной):
def my_func():
global x
x = 10
print(x) # Вывод: 10
my_func()
print(x) # Вывод: 10
Важно помнить: Использование global
стоит избегать, когда это возможно, поскольку это делает код более сложным для понимания и отладки. Лучше передавать данные в функцию и возвращать их из функции, чем использовать глобальные переменные.