Объявление глобальных переменных питон

Ключевое слово global в Python

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

Поэтому перед прочтением этой статьи ознакомьтесь со статьей «Глобальные, локальные и нелокальные переменные в Python».

Что это такое

Ключевое слово global позволяет изменять переменную вне текущей области видимости в Python. global используется для создания глобальной переменной и изменения ее в локальной области видимости.

Что нужно знать прежде, чем работать с global

  • Когда мы создаем переменную внутри функции, она по умолчанию является локальной.
  • Когда мы определяем переменную вне функции, она по умолчанию является глобальной. В этом случае не нужно использовать ключевое слово global .
  • Ключевое слово global нужно для получения доступа к глобальной переменной и изменения ее внутри функции, то есть внутри локальной области видимости.
  • Использовать ключевое слово global вне функции бессмысленно.

Как использовать global

Пример 1. Получаем доступ к глобальной переменной внутри функции

c = 1 # глобальная переменная def add(): print(c) add() 

Все работает! Но что если нам нужно изменить глобальную переменную внутри функции?

Пример 2. Изменяем глобальную переменную внутри функции

c = 1 # глобальная переменная def add(): c = c + 2 # прибавляем 2 к c print(c) add() 
UnboundLocalError: local variable 'c' referenced before assignment

Python сообщает нам, что мы использовали локальную переменную c до ее объявления. Дело в том, что получить доступ к глобальной переменной внутри функции мы можем, а вот изменять ее в локальной области видимости — уже нет.

Для этого и нужно ключевое слово global .

Пример 3. Изменяем глобальную переменную внутри функции с помощью global

c = 0 # глобальная переменная def add(): global c c = c + 2 # прибавляем 2 к c print("Внутри функции add():", c) add() print("В глобальной области видимости:", c) 
Внутри функции add(): 2 В глобальной области видимости: 2

В приведенной выше программе мы определяем c как глобальную переменную внутри функции add() с помощью ключевого слова `global`.

Читайте также:  Распечатать значения словаря python

Внутри функции мы также увеличиваем переменную c ` на 2, то есть выполняем действие c = c + 2 . И, наконец, выводим на экран глобальную переменную c .

Как мы видим, глобальная переменная c изменилась не только внутри функции, но и в глобальной области видимости. И там, и там c = 2 .

Глобальные переменные в модулях Python

В Python принято создавать единый модуль config.py для хранения глобальных переменных и обмена информацией между модулями Python в одной программе.

Вот как можно использовать глобальные переменные между модулями Python.

Пример 4. Используем глобальную переменную между модулями

Создаем файл config.py , в нем будем хранить глобальные переменные.

Создаем файл update.py , чтобы изменять глобальные переменные.

import config config.a = 10 config.b = "алфавит"

Создаем файл main.py . Его будем использовать, чтобы отслеживать изменения значений глобальных переменных.

Теперь запустим файл main.py .

Итак, мы создали 3 файла: config.py , update.py , и main.py .

Модуль config.py хранит глобальные переменные a и b . В файле update.py мы импортируем модуль config.py и изменяем значения a и b . Точно так же в файл main.py мы импортируем config.py и update.py . Наконец, мы печатаем и проверяем значения глобальных переменных независимо от того, изменились они или нет.

Как использовать global во вложенных функция

Пример 5. Используем глобальные переменные во вложенных функциях

def foo(): x = 20 def bar(): global x x = 25 print("До вызова bar(): ", x) print("Вызываем bar()") bar() print("После вызова bar(): ", x) foo() print("x в глобальной областим видимости: ", x)
До вызова bar(): 20 Вызываем bar() После вызова bar(): 20 x в глобальной области видимости: 25

В приведенной выше программе мы объявили глобальную переменную внутри вложенной функции bar() . Внутри функции foo() ключевое слово global никак не влияет на переменную x .

До и после вызова bar() переменная x принимает значение локальной переменной, т. е. x = 20 . Вне функции foo() переменная x примет значение, определенное в функции x , т. е. x = 25 . Так произойдет потому, что мы использовали ключевое слово global , чтобы создать глобальную переменную x внутри функции bar() , то есть в локальной области видимости.

Если мы сделаем какие-либо изменения внутри функции bar() , изменения отобразятся и за пределами локальной области видимости, то есть за пределами функции foo() .

Источник

Как создать и объявить глобальную переменную в Python

Переменная, к которой может получить доступ другой блок, называется глобальной переменной. Его можно определить вне блока. Другими словами, глобальная переменная определяется вне функции, и мы можем получить к ней доступ внутри функции.

Читайте также:  Processing java util concurrentmodificationexception

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

Давайте разберемся как создать и объявить глобальную переменную в Python и посмотрим примеры локальной и глобальной переменных.

Пример локальной переменной:

# example of local variable def sum(): a = 10 # local variables b = 20 c = a + b print("the sum is:", c) sum() # function calling

Переменная определяется внутри функции и может использоваться только в определенной функции, поэтому природа переменной называется локальной переменной. Мы не можем получить к ним доступ в других функциях.

Чтобы преодолеть эту проблему, мы используем глобальные переменные. Давайте разберемся в примере глобальной переменной.

# example of a global variable a = 20 # defined outside the function b = 10 def sum(): c = a + b # Using global variables print("The sum is:", c) def sub(): d = a - b # using global variables print("The sub is:", d) sum() # function calling sub()
The sum is: 30 The sub is: 10

В приведенном выше коде мы определили две глобальные переменные a и b вне функций. Мы использовали их внутри функций sum() и sub(). Обе функции вернули результат при вызове.

Если мы определим локальную переменную с таким же именем, она напечатает значение, которое находится внутри функции, а затем значение глобальной переменной.

def msg(): m = "Hello, how are you?" print(m) msg() m = "I am fine" # global scope print(m)
Hello, how are you? I am fine

Мы определили локальную переменную с тем же именем, что и глобальная переменная; сначала напечатали локальную переменную, а затем значение глобальной переменной.

Глобальное ключевое слово

Python предоставляет глобальное ключевое слово, которое используется для изменения значения глобальной переменной внутри функции. Это полезно, когда мы хотим изменить значение глобальной переменной или присвоить другое значение. Ниже приведены несколько правил для определения глобальных переменных.

Правила глобальных ключевых слов:

  • Если значение определено на выходе функции, оно автоматически станет глобальной переменной или ее областью действия в глобальном масштабе.
  • Глобальное ключевое слово используется для объявления глобальной переменной внутри функции.
  • Нам не нужно использовать ключевое слово global для объявления глобальной переменной вне функции.
  • Переменные, на которые есть ссылка внутри функции, неявно являются глобальными.

Пример – без глобального ключевого слова:

# The example of without using the global keyword c = 10 def mul(): # Multiply by 10 c = c * 10 print(c) mul()
line 8, in mul c = c * 10 UnboundLocalError: local variable 'c' referenced before assignment

В приведенном выше коде возникла ошибка, поскольку мы пытались присвоить значение глобальной переменной. Мы можем изменить значение глобального значения внутри функции, используя ключевое слово global.

Читайте также:  Двумерные массивы питон ввод

Пример – с глобальным ключевым словом:

# The example using the global keyword c = 10 def mul(): global c # Multiply by 10 c = c * 10 print("The value inside function: ", c) mul() print('The value outside the function: ', c)
The value inside function: 100 The value outside the function: 100

В приведенном выше примере мы определили переменную c в функции mul() с помощью ключевого слова global. Значение c умножается на 10; следовательно, возвращается 200. Мы видим в выходных данных, что изменение значения внутри функции отражается на значении вне глобальной переменной.

Глобальные переменные в модулях Python

Преимущество ключевого слова global заключается в создании глобальных переменных и совместном использовании их между различными модулями. Например, мы создаем name.py, который состоит из глобальных переменных. Если мы изменим эти переменные, то это изменение отразится повсюду. Давайте разберемся в следующем примере.

Код – 1: Создайте файл name.py для хранения глобальных переменных.

a = 10 b = 20 msg = "Hello World"

Код – 2: Создайте файл change.py для изменения глобальных переменных.

import name name.a = 15 name.b = 26 name.msg = "Welcome to JavaTpoint"

Здесь мы изменили значение a, b и msg. Эти глобальные переменные были определены в файле name.py, и мы импортировали name и получили доступ к этим переменным.

Код – 3: Создайте файл result.py для печати измененных глобальных переменных.

import name import change print(change.a) print(change.b) print(change.msg)
15 26 Welcome to JavaTpoint

Ключевое слово global во вложенных функциях

Мы можем использовать ключевое слово global внутри вложенной функции. Мы должны объявить переменную, используя ключевое слово global внутри вложенной функции. Давайте разберемся в следующем примере.

# The example of global in nested function def add(): a = 15 def modify(): global a a = 20 print("Before modifying : ", a) print("Making change") modify() print("After modifying: ", a) add() print("value of x: ", a)
Before modifying : 15 Making change After modifying: 15 value of x 20

В приведенном выше коде значение внутри add() принимает значение локальной переменной x = 15. В функции modify() мы присвоили x = 20 с помощью ключевого слова global. Это изменение отражено в переменной функции add().

Источник

Оцените статью