Глобальное ключевое слово Python (с примерами)

В этой статье вы узнаете о глобальном ключевом слове, глобальной переменной и о том, когда использовать глобальные ключевые слова.

Перед чтением этой статьи убедитесь, что у вас есть некоторые основы работы с глобальными, локальными и нелокальными переменными 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().

Интересные статьи...