English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой статье вы узнаете о глобальных переменных Python, локальных переменных, нелокальных переменных и где их использовать.
В Python переменные, объявленные вне функции или в глобальном масштабе, называются глобальными переменными. Это означает, что их можно получить доступ как внутри, так и вне функции.
Давайте посмотрим на пример создания глобальной переменной в Python.
x = "global" def foo(): print("внутренний x:", x) foo() print("внешний x:", x)
Когда мы запустим код, будет выведено:
внутренний x: global внешний x: global
В上面的 коде мыxсозданное в качестве глобальной переменной и определенное foo() для печати глобальной переменнойx. В конце мы вызываем foo(), и будет напечатаноxзначение.
Если нужно изменитьxзначение.
x = "global" def foo(): x = x * 2 print(x) foo()
Когда мы запустим код, будет выведено:
Если нужно изменить
Как быть с значением?
Для реализации этой функции мы использовали глобальное ключевое слово. Для получения дополнительной информации обратитесь вГлобальные ключевые слова Python.
Переменные, объявленные в теле функции или в локальном масштабе, называются локальными переменными.
def foo(): y = "local" foo() print(y)
Когда мы запустим код, будет выведено:
NameError: имя 'y' не определено
Вывод показывает ошибку,因为我们 пытаемся получить доступ к локальной переменной y в глобальном масштабе, а локальные переменные работают только в foo() или в локальном масштабе.
Давайте посмотрим на пример, как создавать локальные переменные в Python.
Обычно, мы объявляем переменную внутри функции для создания локальной переменной.
def foo(): y = "local" print(y) foo()
Когда мы запустим код, он выведет:
local
давайте посмотримпредыдущая проблема, гдеxявляется глобальной переменной, которую мы хотим изменить внутри foo()x.
Здесь мы покажем, как использовать глобальные и локальные переменные в одном коде.
x = "global" def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Когда мы запустим код, будет выведено:
global global local
В上面的 коде мы объявляем x как глобальную переменную, а y как локальную переменную в foo(). Затем мы используем оператор умножения * для изменения глобальной переменной x и одновременного вывода x и y.
После вызова foo() значение x стало global global, потому что мы используем x * 2 для печати global дважды. Затем мы печатаем значение локальной переменной y, то есть локальной переменной.
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Когда мы запустим код, будет выведено:
local x: 10 global x: 5
В приведенном выше коде мы используем одно и то же имя x для глобальной и локальной переменных. Когда мы выводим один и тот же переменной, мы получаем разные результаты, потому что переменная объявлена в двух диапазонах, то есть в локальном диапазоне foo() и глобальном диапазоне за пределами foo().
Когда мы выводим переменную в foo(), она выводит local x: 10. Это называется локальным диапазоном переменной.
Так же, когда мы выводим переменную вне foo(), она выводит global x: 5. Это называется глобальным диапазоном переменной.
Переменные, не являющиеся локальными, используются для вложенных функций, у которых не определен локальный диапазон действия. Это означает, что переменная не может быть в локальном или глобальном диапазоне.
Давайте посмотрим на пример создания глобальной переменной в Python.
Мы используем ключевое слово nonlocal для создания переменной, не являющейся локальной.
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Когда мы запустим код, будет выведено:
inner: nonlocal outer: nonlocal
В приведенном выше коде есть вложенная функция inner(). Мы используем ключевое слово nonlocal для создания переменной, не являющейся локальной. Функция inner() определена в范围内 другой функции external().
ВниманиеЕсли мы изменили значение переменной, не являющейся локальной, эти изменения будут видны в локальной переменной.