В этой статье вы узнаете о глобальном ключевом слове, глобальной переменной и о том, когда использовать глобальные ключевые слова.
Перед чтением этой статьи убедитесь, что у вас есть некоторые основы работы с глобальными, локальными и нелокальными переменными Python.
Что такое глобальное ключевое слово
В Python global
ключевое слово позволяет изменять переменную вне текущей области видимости. Он используется для создания глобальной переменной и внесения изменений в переменную в локальном контексте.
Правила глобального ключевого слова
Основные правила для global
ключевого слова в Python:
- Когда мы создаем переменную внутри функции, она по умолчанию является локальной.
- Когда мы определяем переменную вне функции, она по умолчанию является глобальной. Вам не нужно использовать
global
ключевое слово. - Мы используем
global
ключевое слово для чтения и записи глобальной переменной внутри функции. - Использование
global
ключевого слова вне функции не имеет никакого эффекта.
Использование глобального ключевого слова
Возьмем пример.
Пример 1. Доступ к глобальной переменной изнутри функции
c = 1 # global variable def add(): print(c) add()
Когда мы запустим вышеуказанную программу, вывод будет:
1
Однако у нас могут быть сценарии, в которых нам нужно изменить глобальную переменную внутри функции.
Пример 2: изменение глобальной переменной изнутри функции
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Когда мы запускаем указанную выше программу, вывод показывает ошибку:
UnboundLocalError: локальная переменная 'c', на которую ссылается перед назначением
Это потому, что мы можем получить доступ только к глобальной переменной, но не можем изменить ее изнутри функции.
Решением для этого является использование global
ключевого слова.
Пример 3: изменение глобальной переменной изнутри функции с помощью global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Когда мы запустим вышеуказанную программу, вывод будет:
Внутри add (): 2 В основном: 2
В приведенной выше программе мы определяем c как глобальное ключевое слово внутри add()
функции.
Затем мы увеличиваем переменные с помощью 1
, то есть c = c + 2
. После этого вызываем add()
функцию. Наконец, мы печатаем глобальную переменную c.
Как мы видим, изменение также произошло в глобальной переменной вне функции c = 2
.
Глобальные переменные в модулях Python
В Python мы создаем единый модуль config.py
для хранения глобальных переменных и обмена информацией между модулями Python в одной программе.
Вот как мы можем совместно использовать глобальные переменные в модулях Python.
Пример 4: Совместное использование глобальной переменной в модулях Python
Создайте config.py
файл для хранения глобальных переменных
a = 0 b = "empty"
Создайте update.py
файл для изменения глобальных переменных
import config config.a = 10 config.b = "alphabet"
Создайте main.py
файл, чтобы проверить изменения стоимости
import config import update print(config.a) print(config.b)
Когда мы запустим main.py
файл, вывод будет
10 алфавит
Выше мы создали три файла: config.py
, update.py
и main.py
.
Модуль config.py
хранит глобальные переменные a и b. В update.py
файл мы импортируем config.py
модуль и изменяем значения a и b. Точно так же в main.py
файл мы импортируем config.py
и update.py
module. Наконец, мы печатаем и проверяем значения глобальных переменных независимо от того, изменились они или нет.
Глобальный во вложенных функциях
Вот как вы можете использовать глобальную переменную во вложенной функции.
Пример 5: Использование глобальной переменной во вложенной функции
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
Результат:
До запрета звонков: 20 Запрет звонков сейчас После запрета звонков: 20 x в основном: 25
В приведенной выше программе мы объявили глобальную переменную внутри вложенной функции bar()
. Внутри foo()
функции x не влияет на ключевое слово global.
До и после вызова bar()
, переменная х принимает значение локальной переменной т x = 20
. Вне foo()
функции, переменные й примет значение , определенное в bar()
функции т x = 25
. Это потому, что мы использовали global
ключевое слово в x для создания глобальной переменной внутри bar()
функции (локальная область видимости).
Если мы делаем какие - либо изменения внутри bar()
функции, изменения появляются за пределами местной сферы, то есть foo()
.