В этом руководстве вы узнаете о глобальных переменных Python, локальных переменных, нелокальных переменных и о том, где их использовать.
Видео: локальные и глобальные переменные Python
Глобальные переменные
В Python переменная, объявленная вне функции или в глобальной области видимости, называется глобальной переменной. Это означает, что к глобальной переменной можно получить доступ внутри или вне функции.
Давайте посмотрим на пример того, как в Python создается глобальная переменная.
Пример 1: создать глобальную переменную
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Вывод
x внутри: глобальный x снаружи: глобальный
В приведенном выше коде мы создали x как глобальную переменную и определили a foo()
для печати глобальной переменной x. Наконец, мы вызываем метод, foo()
который напечатает значение x.
Что, если вы хотите изменить значение x внутри функции?
x = "global" def foo(): x = x * 2 print(x) foo()
Вывод
UnboundLocalError: локальная переменная 'x', на которую ссылается перед назначением
Вывод показывает ошибку, потому что Python рассматривает x как локальную переменную, а x также не определен внутри foo()
.
Чтобы это сработало, мы используем global
ключевое слово. Посетите Python Global Keyword, чтобы узнать больше.
Локальные переменные
Переменная, объявленная внутри тела функции или в локальной области видимости, называется локальной переменной.
Пример 2: Доступ к локальной переменной вне области видимости
def foo(): y = "local" foo() print(y)
Вывод
NameError: имя 'y' не определено
Вывод показывает ошибку, потому что мы пытаемся получить доступ к локальной переменной y в глобальной области видимости, тогда как локальная переменная работает только внутри foo()
или в локальной области.
Давайте посмотрим на примере того, как в Python создается локальная переменная.
Пример 3: Создание локальной переменной
Обычно мы объявляем переменную внутри функции для создания локальной переменной.
def foo(): y = "local" print(y) foo()
Вывод
местный
Давайте посмотрим на более раннюю проблему, когда x была глобальной переменной, и мы хотели изменить x внутри foo()
.
Глобальные и локальные переменные
Здесь мы покажем, как использовать глобальные и локальные переменные в одном коде.
Пример 4: Использование глобальных и локальных переменных в одном коде
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Вывод
глобальный глобальный локальный
В приведенном выше коде мы объявляем x как глобальную, а y как локальную переменную в foo()
. Затем мы используем оператор умножения *
для изменения глобальной переменной x и печатаем как x, так и y.
После вызова foo()
, значение x становится равным, global global
потому что мы использовали x * 2
для печати два раза global
. После этого, мы выводим значение локальной переменной у т local
.
Пример 5: глобальная переменная и локальная переменная с тем же именем
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Вывод
локальный x: 10 глобальный x: 5
В приведенном выше коде мы использовали одно и то же имя x как для глобальной, так и для локальной переменной. Мы получаем другой результат, когда печатаем одну и ту же переменную, потому что переменная объявлена в обеих областях, то есть в локальной области видимости внутри foo()
и глобальной области снаружи foo()
.
When we print the variable inside foo()
it outputs local x: 10
. This is called the local scope of the variable.
Similarly, when we print the variable outside the foo()
, it outputs global x: 5. This is called the global scope of the variable.
Nonlocal Variables
Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.
Let's see an example of how a nonlocal variable is used in Python.
We use nonlocal
keywords to create nonlocal variables.
Example 6: Create a nonlocal variable
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
В приведенном выше коде есть вложенная inner()
функция. Мы используем nonlocal
ключевые слова для создания нелокальной переменной. inner()
Функция определяется в рамках другой функции outer()
.
Примечание . Если мы изменим значение нелокальной переменной, изменения появятся в локальной переменной.