Глобальные, локальные и нелокальные переменные Python
Глобальные, локальные и нелокальные переменные Python
В этом руководстве вы узнаете о глобальных переменных Python, локальных переменных, нелокальных переменных и о том, где их использовать.
Видео:локальные и глобальные переменные Python
Глобальные переменные
В Python переменная, объявленная вне функции или в глобальной области видимости, называется глобальной переменной. Это означает, что доступ к глобальной переменной можно получить внутри или вне функции.
Давайте посмотрим на пример создания глобальной переменной в Python.
Пример 1. Создание глобальной переменной
x = "global"
def foo():
print("x inside:", x)
foo()
print("x outside:", x)
Вывод
x inside: global x outside: global
В приведенном выше коде мы создали x как глобальную переменную и определил foo()
чтобы напечатать глобальную переменную x . Наконец, мы вызываем foo()
который напечатает значение x .
Что делать, если вы хотите изменить значение x внутри функции?
x = "global"
def foo():
x = x * 2
print(x)
foo()
Вывод
UnboundLocalError: local variable 'x' referenced before assignment
Вывод показывает ошибку, потому что Python обрабатывает x как локальная переменная и x также не определен внутри foo()
.
Чтобы это работало, мы используем global
ключевое слово. Посетите страницу глобального ключевого слова Python, чтобы узнать больше.
Локальные переменные
Переменная, объявленная внутри тела функции или в локальной области видимости, называется локальной переменной.
Пример 2. Доступ к локальной переменной вне области действия
def foo():
y = "local"
foo()
print(y)
Вывод
NameError: name 'y' is not defined
Вывод показывает ошибку, потому что мы пытаемся получить доступ к локальной переменной y в глобальной области видимости, тогда как локальная переменная работает только внутри foo()
или локальная область.
Давайте рассмотрим пример создания локальной переменной в Python.
Пример 3. Создание локальной переменной
Обычно мы объявляем переменную внутри функции, чтобы создать локальную переменную.
def foo():
y = "local"
print(y)
foo()
Вывод
local
Давайте посмотрим на предыдущую задачу, где x была глобальной переменной, и мы хотели изменить x внутри foo()
.
Глобальные и локальные переменные
Здесь мы покажем, как использовать глобальные и локальные переменные в одном и том же коде.
Пример 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 то есть local
.
Пример 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()
функция определена в области действия другой функции outer()
.
Примечание :если мы изменим значение нелокальной переменной, изменения отобразятся в локальной переменной.
Python
- C Переменные, константы и литералы
- Ключевые слова и идентификаторы Python
- Оператор Python, отступы и комментарии
- Переменные Python, константы и литералы
- Преобразование типов Python и приведение типов
- Ввод, вывод и импорт Python
- Глобальное ключевое слово Python
- Числа Python, преобразование типов и математика
- Управление каталогами и файлами Python
- Ошибки Python и встроенные исключения