English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Перед чтением этой статьи убедитесь, что вы уже знаетеГлобальные, локальные и не локальные переменные в PythonНекоторые основы.
В Python ключевое слово global позволяет вам изменять переменные за пределами текущего контекста. Оно используется для создания глобальных переменных и изменения их в локальном контексте.
Основные правила ключевого слова global в Python:
Когда мы создаем переменную внутри функции, по умолчанию она является локальной.
Когда мы определяем переменную вне функции, по умолчанию она является глобальной. Мы не должны использовать ключевое слово global.
Мы используем ключевое слово global для чтения и записи глобальных переменных внутри функции.
Использование ключевого слова global вне функции неэффективно
Давайте приведем пример.
c = 1 # Глобальная переменная def add(): print(c) add()
Когда мы запустим上面的 программу, вывод будет следующим:
1
Но в некоторых случаях нам нужно изменить глобальную переменную изнутри функции.
c = 1 # Глобальная переменная def add(): c = c + 2 # Увеличить c на 2 print(c) add()
Когда мы запустим上面的 программу, вывод покажет ошибку:
UnboundLocalError: local variable 'c' referenced before assignment
Это потому, что мы можем только обращаться к глобальным переменным, но не можем изменять их изнутри функции.
Решение - использовать ключевое слово global.
c = 0 # Глобальная переменная def add(): global c c = c + 2 # Увеличить на 2 print("Inside add():", c) add() print("In main:", c)
Когда мы запустим上面的 программу, вывод будет следующим:
Inside add(): 2 In main: 2
В上面的 программе мы определили c как глобальную ключевую слово внутри функции add().
Затем увеличьте переменную c на 1, то есть c = c + 2. После этого мы вызываем функцию add(). В конце мы выводим глобальную переменную c.
Как мы видим, переменные, находящиеся вне функции, также изменились c = 2.
В Python мы создаем модуль config.py для хранения глобальных переменных и обмена информацией между модулями Python в одной программе.
Вот как мы делимся глобальными переменными между модулями 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 alphabet
В上文е мы создали три файла: config.py, update.py и main.py.
Этот модуль config.py хранитaиworth bглобальные переменные. В файле update.py мы импортируем модуль config.py и изменяемaиbworth. Таким же образом, в файле main.py мы импортируем модули config.py и update.py. В конце мы выводим и тестируем значение глобальных переменных, независимо от того, изменились ли они.
Это метод использования глобальных переменных в вложенных функциях.
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() переменная x не влияет на ключевое слово global.
До и после вызова bar переменная x принимает значение локальной переменной, то есть x = 20. За пределами функции foo переменная x будет принимать значение, определенное в функции bar, то есть x = 25. Это потому, что мы использовали ключевое слово global в функции bar (локальный контекст) для создания глобальной переменной.
Если мы сделали какие-либо изменения в функции bar(), эти изменения будут видны за пределами локального контекста, то есть в foo().