În acest tutorial, veți afla despre variabilele globale Python, variabile locale, variabile nelocale și unde să le utilizați.
Video: Variabile locale și globale Python
Variabile globale
În Python, o variabilă declarată în afara funcției sau în domeniul global este cunoscută sub numele de variabilă globală. Aceasta înseamnă că o variabilă globală poate fi accesată în interiorul sau în afara funcției.
Să vedem un exemplu al modului în care este creată o variabilă globală în Python.
Exemplul 1: creați o variabilă globală
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Ieșire
x în interior: global x în exterior: global
În codul de mai sus, am creat x ca o variabilă globală și am definit o foo()
pentru a imprima variabila globală x. În cele din urmă, numim foo()
care va imprima valoarea lui x.
Ce se întâmplă dacă doriți să modificați valoarea lui x în interiorul unei funcții?
x = "global" def foo(): x = x * 2 print(x) foo()
Ieșire
UnboundLocalError: variabila locală „x” la care se face referire înainte de atribuire
Ieșirea arată o eroare deoarece Python tratează x ca o variabilă locală și x nu este, de asemenea, definit în interior foo()
.
Pentru ca acest lucru să funcționeze, folosim global
cuvântul cheie. Accesați Cuvântul cheie global Python pentru a afla mai multe.
Variabile locale
O variabilă declarată în corpul funcției sau în domeniul local este cunoscută sub numele de variabilă locală.
Exemplul 2: accesarea variabilei locale în afara domeniului
def foo(): y = "local" foo() print(y)
Ieșire
NameError: numele „y” nu este definit
Ieșirea arată o eroare deoarece încercăm să accesăm o variabilă locală y într-un domeniu global, în timp ce variabila locală funcționează numai în interior foo()
sau în domeniul local.
Să vedem un exemplu despre cum este creată o variabilă locală în Python.
Exemplul 3: creați o variabilă locală
În mod normal, declarăm o variabilă în interiorul funcției pentru a crea o variabilă locală.
def foo(): y = "local" print(y) foo()
Ieșire
local
Să aruncăm o privire la problema anterioară în care x era o variabilă globală și am vrut să modificăm x în interior foo()
.
Variabile globale și locale
Aici, vom arăta cum să utilizați variabile globale și variabile locale în același cod.
Exemplul 4: Utilizarea variabilelor globale și locale în același cod
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Ieșire
global global local
În codul de mai sus, declarăm x ca global și y ca variabilă locală în foo()
. Apoi, folosim operatorul de multiplicare *
pentru a modifica variabila globală x și tipărim atât x, cât și y.
După apelare foo()
, valoarea lui x devine global global
pentru că am folosit x * 2
pentru a tipări de două ori global
. După aceea, imprimăm valoarea variabilei locale y ie local
.
Exemplul 5: variabilă globală și variabilă locală cu același nume
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Ieșire
local x: 10 global x: 5
În codul de mai sus, am folosit același nume x atât pentru variabila globală, cât și pentru variabila locală. Obținem un rezultat diferit atunci când imprimăm aceeași variabilă, deoarece variabila este declarată în ambele domenii, adică domeniul local din interior foo()
și domeniul global din exterior foo()
.
Când imprimăm variabila din interiorul foo()
acesteia rezultă local x: 10
. Aceasta se numește sfera locală a variabilei.
În mod similar, atunci când tipărim variabila în afara lui foo()
, rezultă global x: 5. Aceasta se numește sfera globală a variabilei.
Variabile nelocale
Variabilele nelocale sunt utilizate în funcții imbricate al căror scop local nu este definit. Aceasta înseamnă că variabila nu poate fi nici în domeniul local, nici în cel global.
Să vedem un exemplu al modului în care este utilizată o variabilă nelocală în Python.
Folosim nonlocal
cuvinte cheie pentru a crea variabile nelocale.
Exemplul 6: creați o variabilă nelocală
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Ieșire
interior: nonlocal exterior: nonlocal
În codul de mai sus, există o inner()
funcție imbricată . Folosim nonlocal
cuvinte cheie pentru a crea o variabilă nelocală. inner()
Funcția este definită în sfera de aplicare a unei alte funcții outer()
.
Notă : Dacă schimbăm valoarea unei variabile nelocale, modificările apar în variabila locală.