Как изменить глобальную переменную внутри функции с помощью `global`?

Для изменения глобальной переменной внутри функции, её необходимо объявить с помощью ключевого слова global перед использованием. Это сообщает Python, что имя переменной относится к глобальной области видимости, а не к локальной.

Пример:

  global_var = 10

  def modify_global():
    global global_var
    global_var = 20

  modify_global()
  print(global_var) # Выведет 20
  

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

Вот пример, демонстрирующий изменение глобальной переменной с использованием global:


# Глобальная переменная
global_var = 10

def modify_global():
  # Указываем, что используем глобальную переменную
  global global_var
  global_var = 20
  print(f"Значение global_var внутри функции: {global_var}")


print(f"Значение global_var до вызова функции: {global_var}")
modify_global()
print(f"Значение global_var после вызова функции: {global_var}")
  

Вывод:


Значение global_var до вызова функции: 10
Значение global_var внутри функции: 20
Значение global_var после вызова функции: 20
  

Объяснение:

  • В начале определяем глобальную переменную global_var со значением 10.
  • Внутри функции modify_global() используем global global_var, чтобы указать, что работаем с глобальной переменной.
  • Затем присваиваем global_var значение 20.
  • Изменение значения глобальной переменной внутри функции влияет на ее значение и за пределами функции.

Важно помнить:

  • Использование global должно быть осознанным. Частое его использование может затруднить понимание кода и сделать его менее предсказуемым.
  • Старайтесь минимизировать использование глобальных переменных. Вместо этого, по возможности, передавайте переменные как аргументы функций и возвращайте измененные значения. Это сделает ваш код более модульным и тестируемым.
  • Если глобальная переменная предназначена только для чтения внутри функции, использование global не требуется. Функция автоматически получит доступ к глобальной переменной. global нужно использовать только для изменения значения глобальной переменной.
0