Как использовать глобальные переменные в Python (глобальное ключевое слово)
Узнайте, как глобальные переменные работают в Python. Понимать область видимости переменных, локальные и глобальные пространства имен и способы изменения переменных с помощью ключевого слова global.
Обзор
Понимание пространств имен и области видимости переменных имеет решающее значение для написания безошибочного программного обеспечения на Python. Область определяет, какие части вашей программы могут получать доступ к переменной или изменять ее. Переменная, объявленная вне всех функций, существует в глобальной области видимости и может быть прочитана в любом месте модуля.
Однако проблема возникает, когда функция пытается изменить (переназначить) глобальную переменную. По умолчанию, когда Python видит присвоение внутри функции, он предполагает, что переменная является локальной для функции. Если вы попытаетесь изменить глобальную переменную, не объявляя ее глобальной, Python создаст локальную переменную с тем же именем, оставив глобальную переменную неизменной (или вызовет `UnboundLocalError`).
Чтобы явно сообщить Python, что вы хотите изменить переменную в глобальном пространстве имен, а не создавать локальную, вы должны объявить ее, используя ключевое слово global внутри функции. Хотя использование глобальных переменных иногда необходимо, обычно это считается плохой практикой при разработке большого программного обеспечения, поскольку затрудняет отслеживание и отладку состояния.
Код и вывод выполнения
Этот сценарий демонстрирует чтение глобальных переменных, ловушку затенения переменных и изменение глобальных переменных с помощью ключевого слова global.
counter = 10 # Global variable
def read_counter():
# Reading a global variable works out-of-the-box
print("Reading global counter:", counter)
def shadow_counter():
# Attempting to assign without 'global' creates a local variable
counter = 20 # Shadowing
print("Inside shadow function:", counter)
def modify_counter():
global counter # Declaring we are writing to global scope
counter = 50
print("Inside modify function:", counter)
read_counter()
shadow_counter()
print("Counter after shadow function:", counter) # Remains 10
modify_counter()
print("Counter after modify function:", counter) # Now 50Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50Пошаговая реализация
- Объявляйте переменные, к которым необходимо иметь глобальный доступ за пределами области действия какой-либо функции.
- Чтение глобальных переменных внутри любой функции без добавления специальных объявлений.
- Используйте глобальное ключевое слово (например, глобальный счетчик) внутри функций, если вам нужно изменить значение глобальной переменной.
- Ограничьте использование глобальных переменных, чтобы предотвратить путаницу в области видимости и загрязнение пространства имен.
Часто задаваемые вопросы
Что такое затенение переменных в Python?
Затенение происходит, когда переменная, объявленная внутри локальной области (например, функция), имеет то же имя, что и переменная во внешней глобальной области. Локальная переменная маскирует глобальную, делая ее временно недоступной внутри этой области.
В чем разница между глобальными и нелокальными ключевыми словами?
global используется для доступа к переменным, определенным в области самого внешнего модуля. Nonlocal используется внутри вложенных функций для доступа к переменным, определенным во внешней (внешней) области действия функции.
Связанные темы
Узнайте, как обрабатывать исключения в Python с помощью блоков try, кроме, else иfinally. Пишите безошибочный и устойчивый к сбоям код Python.
Как создать класс в PythonУзнайте, как создать класс в Python. Освойте конструктор __init__, методы экземпляра, ключевое слово self и создание экземпляров объектов.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Объяснение переменных и типов данных Python
Понимать переменные Python и основные типы данных (строки, целые числа, числа с плавающей запятой, логические значения). Полное руководство для начинающих по распределению памяти в Python.
Шпаргалка по строковым методам Python
Полное справочное руководство по манипулированию строками в Python. Мастер форматирования, поиска, разделения, замены и проверки свойств строк.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.