Python globalne, lokalne i nelokalne varijable (s primjerima)

U ovom vodiču naučit ćete o globalnim varijablama Python, lokalnim varijablama, nelokalnim varijablama i gdje ih koristiti.

Video: Python lokalne i globalne varijable

Globalne varijable

U Pythonu je varijabla deklarirana izvan funkcije ili u globalnom opsegu poznata kao globalna varijabla. To znači da se globalnoj varijabli može pristupiti unutar ili izvan funkcije.

Pogledajmo primjer kako se u Pythonu stvara globalna varijabla.

Primjer 1: Stvorite globalnu varijablu

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

Izlaz

 x iznutra: globalno x izvana: globalno

U gornjem kodu stvorili smo x kao globalnu varijablu i definirali a foo()za ispis globalne varijable x. Konačno, pozivamo foo()koji će ispisati vrijednost x.

Što ako želite promijeniti vrijednost x unutar funkcije?

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

Izlaz

 UnboundLocalError: navedena lokalna varijabla 'x' prije dodjele

Izlaz prikazuje pogrešku jer Python x tretira kao lokalnu varijablu, a x također nije definiran iznutra foo().

Da bismo to uspjeli, koristimo globalključnu riječ. Posjetite Python Global Keyword da biste saznali više.

Lokalne varijable

Varijabla deklarirana unutar tijela funkcije ili u lokalnom opsegu poznata je kao lokalna varijabla.

Primjer 2: Pristup lokalnoj varijabli izvan opsega

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

Izlaz

 NameError: ime 'y' nije definirano

Izlaz prikazuje pogrešku jer pokušavamo pristupiti lokalnoj varijabli y u globalnom opsegu, dok lokalna varijabla radi samo unutar foo()ili u lokalnom opsegu.

Pogledajmo primjer kako se lokalna varijabla stvara u Pythonu.

Primjer 3: Stvorite lokalnu varijablu

Uobičajeno deklariramo varijablu unutar funkcije kako bismo stvorili lokalnu varijablu.

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

Izlaz

 lokalno

Pogledajmo raniji problem gdje je x bio globalna varijabla i htjeli smo izmijeniti x iznutra foo().

Globalne i lokalne varijable

Ovdje ćemo pokazati kako koristiti globalne varijable i lokalne varijable u istom kodu.

Primjer 4: Korištenje globalnih i lokalnih varijabli u istom kodu

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

Izlaz

 globalni globalni lokalni

U gornjem kodu deklariramo x kao globalnu, a y kao lokalnu varijablu u foo(). Zatim koristimo operator množenja *da modificiramo globalnu varijablu x i ispisujemo x i y.

Nakon poziva foo(), vrijednost x postaje global globaljer smo x * 2dva puta koristili za ispis global. Nakon toga ispisujemo vrijednost lokalne varijable y ie local.

Primjer 5: Globalna varijabla i Lokalna varijabla s istim imenom

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

Izlaz

 lokalni x: 10 globalni x: 5

U gornjem kodu koristili smo isto ime x i za globalnu i za lokalnu varijablu. Dobijamo drugačiji rezultat kada ispisujemo istu varijablu jer je varijabla deklarirana u oba opsega, tj. Lokalni opseg unutar foo()i globalni opseg izvana foo().

Kada ispisujemo varijablu unutar foo()njenih rezultata local x: 10. To se naziva lokalnim opsegom varijable.

Slično tome, kada varijablu ispisujemo izvan foo(), ona daje globalni x: 5. To se naziva globalni opseg varijable.

Nelokalne varijable

Nelokalne varijable koriste se u ugniježđenim funkcijama čiji lokalni opseg nije definiran. To znači da varijabla ne može biti ni u lokalnom ni u globalnom opsegu.

Pogledajmo primjer kako se nelokalna varijabla koristi u Pythonu.

nonlocalZa izradu nelokalnih varijabli koristimo ključne riječi.

Primjer 6: Stvorite nelokalnu varijablu

 def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()

Izlaz

 unutarnja: nelokalna vanjska: nelokalna

U gore navedenom kodu nalazi se ugniježđena inner()funkcija. Koristimo nonlocalključne riječi za stvaranje nelokalne varijable. inner()Funkcija je definirana u okviru drugog funkcije outer().

Napomena : Ako promijenimo vrijednost nelokalne varijable, promjene će se pojaviti u lokalnoj varijabli.

Zanimljivi članci...