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

В этом руководстве вы узнаете о глобальных переменных 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().

Примечание . Если мы изменим значение нелокальной переменной, изменения появятся в локальной переменной.

Интересные статьи...