Zmienne globalne, lokalne i nielokalne w Pythonie (z przykładami)

W tym samouczku dowiesz się o zmiennych globalnych Pythona, zmiennych lokalnych, zmiennych nielokalnych oraz o tym, gdzie ich używać.

Wideo: Zmienne lokalne i globalne języka Python

Zmienne globalne

W Pythonie zmienna zadeklarowana poza funkcją lub w zasięgu globalnym jest nazywana zmienną globalną. Oznacza to, że dostęp do zmiennej globalnej można uzyskać wewnątrz lub na zewnątrz funkcji.

Zobaczmy przykład tworzenia zmiennej globalnej w Pythonie.

Przykład 1: Utwórz zmienną globalną

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Wynik

 x wewnątrz: globalnie x na zewnątrz: globalnie

W powyższym kodzie utworzyliśmy x jako zmienną globalną i zdefiniowaliśmy a, foo()aby wydrukować zmienną globalną x. Na koniec wywołujemy metodę, foo()która wypisze wartość x.

A co jeśli chcesz zmienić wartość x wewnątrz funkcji?

 x = "global" def foo(): x = x * 2 print(x) foo()

Wynik

 UnboundLocalError: odwołanie do zmiennej lokalnej „x” przed przypisaniem

Wynik pokazuje błąd, ponieważ Python traktuje x jako zmienną lokalną, a x również nie jest zdefiniowane w środku foo().

Aby to zadziałało, używamy globalsłowa kluczowego. Odwiedź stronę Python Global Keyword, aby dowiedzieć się więcej.

Zmienne lokalne

Zmienna zadeklarowana wewnątrz ciała funkcji lub w zakresie lokalnym jest nazywana zmienną lokalną.

Przykład 2: Dostęp do zmiennej lokalnej poza zakresem

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

Wynik

 NameError: nazwa „y” nie jest zdefiniowana

Dane wyjściowe pokazują błąd, ponieważ próbujemy uzyskać dostęp do zmiennej lokalnej y w zakresie globalnym, podczas gdy zmienna lokalna działa tylko w foo()zakresie lokalnym lub wewnętrznym .

Zobaczmy przykład, jak tworzona jest zmienna lokalna w Pythonie.

Przykład 3: Utwórz zmienną lokalną

Zwykle deklarujemy zmienną wewnątrz funkcji, aby utworzyć zmienną lokalną.

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

Wynik

 lokalny

Przyjrzyjmy się wcześniejszemu problemowi, w którym x było zmienną globalną i chcieliśmy zmodyfikować x wewnątrz foo().

Zmienne globalne i lokalne

Tutaj pokażemy, jak używać zmiennych globalnych i zmiennych lokalnych w tym samym kodzie.

Przykład 4: Używanie zmiennych globalnych i lokalnych w tym samym kodzie

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Wynik

 globalnie globalnie lokalnie

W powyższym kodzie deklarujemy x jako zmienną globalną, a y jako zmienną lokalną w pliku foo(). Następnie używamy operatora mnożenia *do modyfikacji zmiennej globalnej x i wypisujemy zarówno x, jak i y.

Po wywołaniu the foo(), wartość x staje się, global globalponieważ użyliśmy x * 2do wypisania dwa razy global. Następnie wypisujemy wartość zmiennej lokalnej y ie local.

Przykład 5: zmienna globalna i zmienna lokalna o tej samej nazwie

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Wynik

 lokalny x: 10 globalny x: 5

W powyższym kodzie użyliśmy tej samej nazwy x zarówno dla zmiennej globalnej, jak i zmiennej lokalnej. Otrzymujemy inny wynik, gdy drukujemy tę samą zmienną, ponieważ zmienna jest zadeklarowana w obu zakresach, tj. Zasięg lokalny wewnątrz foo()i zasięg globalny na zewnątrz 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

W powyższym kodzie znajduje się inner()funkcja zagnieżdżona . Używamy nonlocalsłów kluczowych do tworzenia zmiennej nielokalnej. inner()Funkcja jest określona w zakresie inną funkcję outer().

Uwaga : Jeśli zmienimy wartość zmiennej nielokalnej, zmiany pojawią się w zmiennej lokalnej.

Interesujące artykuły...