Ключевое слово global в Python
В Python ключевое слово global позволяет изменять переменную вне текущей области видимости.
Оно используется для создания глобальной переменной и внесения изменений в неё в локальном контексте.
Прежде чем изучать ключевое слово global, убедитесь, что знакомы с Область видимости переменных в Python.
Доступ и изменение глобальной переменной
Сначала попробуем обратиться к глобальной переменной изнутри функции:
c = 1 # глобальная переменная
def add():
print(c)
add()
# Вывод: 1
Здесь видно, что мы обратились к глобальной переменной изнутри функции.
Однако если попытаться изменить глобальную переменную изнутри функции:
# глобальная переменная
c = 1
def add():
# увеличиваем c на 2
c = c + 2
print(c)
add()
Вывод
UnboundLocalError: local variable 'c' referenced before assignment
Это происходит потому, что мы можем только обращаться к глобальной переменной, но не изменять её изнутри функции.
Решение — использовать ключевое слово global.
Пример: изменение глобальной переменной изнутри функции с помощью global
# глобальная переменная
c = 1
def add():
# использование ключевого слова global
global c
# увеличиваем c на 2
c = c + 2
print(c)
add()
# Вывод: 3
В приведённом примере мы определили c с ключевым словом global внутри add().
Затем мы увеличили переменную c на 2, т.е. c = c + 2.
Как видим, при вызове add() значение глобальной переменной c изменилось с 1 на 3.
Правила работы ключевого слова global
Основные правила работы ключевого слова global в Python:
Когда мы создаём переменную внутри функции, она по умолчанию локальная.
Когда мы определяем переменную вне функции, она по умолчанию глобальная. Не нужно использовать ключевое слово
global.Мы используем ключевое слово
globalдля изменения (записи) глобальной переменной внутри функции.Использование ключевого слова
globalвне функции не имеет эффекта.