English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Контроль потока в Python

Функции в Python

Типы данных Python

Файловые операции в Python

Объекты и классы в Python

Даты и время в Python

Продвинутые знания Python

Python справочник

Глобальные, локальные и не локальные переменные в Python

В этой статье вы узнаете о глобальных переменных Python, локальных переменных, нелокальных переменных и где их использовать.

Глобальные переменные

В Python переменные, объявленные вне функции или в глобальном масштабе, называются глобальными переменными. Это означает, что их можно получить доступ как внутри, так и вне функции.

Давайте посмотрим на пример создания глобальной переменной в Python.

Пример 1: Создание глобальной переменной

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.

Локальные переменные

Переменные, объявленные в теле функции или в локальном масштабе, называются локальными переменными.

Пример 2: Доступ к переменной за пределами области видимости

def foo():
 y = "local"
foo()
print(y)

Когда мы запустим код, будет выведено:

NameError: имя 'y' не определено

Вывод показывает ошибку,因为我们 пытаемся получить доступ к локальной переменной y в глобальном масштабе, а локальные переменные работают только в foo() или в локальном масштабе.

Давайте посмотрим на пример, как создавать локальные переменные в Python.

Пример 3: Создание локальной переменной

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

def foo():
 y = "local"
 print(y)
foo()

Когда мы запустим код, он выведет:

local

давайте посмотримпредыдущая проблема, гдеxявляется глобальной переменной, которую мы хотим изменить внутри foo()x.

Глобальные и локальные переменные

Здесь мы покажем, как использовать глобальные и локальные переменные в одном коде.

Пример 4: Использование глобальных и локальных переменных в одном коде

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, то есть локальной переменной.

Пример 5: Глобальная и локальная переменные с одинаковым именем

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 для создания переменной, не являющейся локальной.

Пример 6: Создание переменной, не являющейся локальной

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().

ВниманиеЕсли мы изменили значение переменной, не являющейся локальной, эти изменения будут видны в локальной переменной.