Ключевое слово 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 вне функции не имеет эффекта.