В этой статье вы узнаете о глобальном ключевом слове, глобальной переменной и о том, когда использовать глобальные ключевые слова.
Перед чтением этой статьи убедитесь, что у вас есть некоторые основы работы с глобальными, локальными и нелокальными переменными 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.pymodule. Наконец, мы печатаем и проверяем значения глобальных переменных независимо от того, изменились они или нет.
Глобальный во вложенных функциях
Вот как вы можете использовать глобальную переменную во вложенной функции.
Пример 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().








