Глобальная переменная в Python

Глобальная переменная в 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 для модификации или использования.

Report Page