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 global
ključ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 global
jer smo x * 2
dva 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.
nonlocal
Za 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 nonlocal
ključ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.