Переменная, доступ к которой можно получить из любого места в коде, называется глобальной. Ее можно определить вне блока. Другими словами, глобальная переменная, объявленная вне функции, будет доступна внутри нее.
С другой стороны, переменная, объявленная внутри определенного блока кода, будет видна только внутри этого же блока — она называется локальной.
Разберемся с этими понятиями на примере.
Пример локальных и глобальных переменных
Вывод: Сумма: 30
.
Переменная объявлена внутри функции и может использоваться только в ней. Получить доступ к этой локальной функции в других нельзя.
Для решения этой проблемы используются глобальные переменные.
Теперь взгляните на этот пример с глобальными переменными:
Вывод:
Сумма: 30
Разница: 10
В этом коде были объявлены две глобальные переменные: a
и b
. Они используются внутри функций sum()
и sub()
. Обе возвращают результат при вызове.
Если определить локальную переменную с тем же именем, то приоритет будет у нее. Посмотрите, как в функции msg
это реализовано.
Вывод:
Привет, как дела?
Отлично!
Здесь была объявлена локальная переменная с таким же именем, как и у глобальной. Сперва выводится значение локальной, а после этого — глобальной.
Python предлагает ключевое слово global
, которое используется для изменения значения глобальной переменной в функции. Оно нужно для изменения значения. Вот некоторые правила по работе с глобальными переменными.
Правила использования global
- Если значение определено на выходе функции, то оно автоматически станет глобальной переменной.
- Ключевое слово
global
используется для объявления глобальной переменной внутри функции. - Нет необходимости использовать
global
для объявления глобальной переменной вне функции. - Переменные, на которые есть ссылка внутри функции, неявно являются глобальными.
Пример без использования глобального ключевого слова.
Вывод:
line 5, in mul
c = c * 10
UnboundLocalError: local variable 'c' referenced before assignment
Этот код вернул ошибку, потому что была предпринята попытка присвоить значение глобальной переменной. Изменять значение можно только с помощью ключевого слова global
.
Вывод:
Значение в функции: 100
Значение вне функции: 100
Здесь переменная c была объявлена в функции mul()
с помощью ключевого слова global
. Ее значение умножается на 10 и становится равным 100. В процессе работы программы можно увидеть, что изменение значения внутри функции отражается на глобальном значении переменной.
Глобальные переменные в модулях Python
Преимущество использования ключевого слова global
— в возможности создавать глобальные переменные и передавать их между модулями. Например, можно создать name.py, который бы состоял из глобальных переменных. Если их изменить, то изменения повлияют на все места, где эти переменные встречаются.
1. Создаем файл name.py для хранения глобальных переменных:
2. Создаем файл change.py для изменения переменных:
Меняем значения a
, b
и msg
. Эти переменные были объявлены внутри name
, и для их изменения модуль нужно было импортировать.
3. В третий файл выводим значения измененных глобальных переменных.
Значение изменилось. Вывод:
15
25
Dood bye
Global во вложенных функциях
Можно использовать ключевое слово global
во вложенных функциях.
Вывод:
Перед изменением: 15
Внесение изменений
После изменения: 15
Значение a: 20
В этом коде значение внутри add()
принимает значение локальной переменной x = 15
. В modify()
оно переназначается и принимает значение 20 благодаря global
. Это и отображается в переменной функции add()
.
- Источник: pythonru.com
- _Мета слова: _