logo

Variabile globale și locale în Python

În variabilele Python joacă un rol cheie în stocarea și gestionarea datelor. Comportamentul și accesibilitatea lor depind de locul în care sunt definite în program. În acest articol vom explora variabilele globale și locale cum funcționează și scenariile comune cu exemple.

Variabile locale

Variabilele locale sunt create într -o funcție și există doar în timpul execuției sale. Nu pot fi accesate din afara funcției.

șir de caractere java concatenate

Exemplul 1: În acest cod creăm și accesăm o variabilă locală într -o funcție.



Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet() 

Ieșire
Hello from inside the function! 

Explicaţie: Definim salut () cu o variabilă locală MSG și imprimați -l. Deoarece MSG există numai în timpul executării funcției, este accesat în cadrul funcției. Chemare salut () Afișează mesajul.

Exemplul 2 : În acest exemplu, creăm o variabilă locală într -o funcție și apoi încercăm să o accesăm în afara funcției care provoacă o eroare.

Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg) 

Ieșire

Traceback (cel mai recent apel ultim):
Fișier '/home/guest/sandbox/solution.py' Linia 6 în
Imprimare ('Funcție exterioară:' MSG)
NameError: numele „MSG” nu este definit

Explicație: MSG este o variabilă locală în interior salut () și poate fi accesat doar acolo. Imprimarea în exterior provoacă o eroare, deoarece nu există la nivel global.

Variabile globale

Variabilele globale sunt declarate în afara tuturor funcțiilor și pot fi accesate oriunde în program, inclusiv funcții interioare.

În acest exemplu, creăm o variabilă globală și apoi o accesăm atât în ​​interiorul, cât și în afara unei funcții.

Python
msg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg) 

Ieșire
Inside function: Python is awesome! Outside function: Python is awesome! 

Explicație: MSG este o variabilă globală accesibilă atât în ​​interiorul cât și în afara afişa() funcţie. Chemare afişa() tipărește global MSG și imprimare MSG În afara funcției funcționează așa cum era de așteptat.

Nota: Dacă o variabilă nu se găsește în interiorul unei funcții (domeniul local), Python îl caută automat în domeniul global. Cu toate acestea, dacă o variabilă locală are același nume ca unul global, va umbri variabila globală în interiorul acelei funcții.

Utilizarea variabilelor locale și globale

Dacă o variabilă este definită atât la nivel global, cât și local, cu același nume, variabila locală umbră variabila globală din interiorul funcției. Modificările la variabila locală nu afectează variabila globală decât dacă declarați în mod explicit variabila ca globală.

Python
def fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s) 

Ieșire
Me too. I love Geeksforgeeks 

Explicaţie: Interior distracţie() s este o variabilă locală setată la „și eu”. și tipărește această valoare. În afara globalului s rămâne „I love geeksforgeeks”, așa că imprimarea s ulterior arată valoarea globală.

Modificarea variabilelor globale în interiorul unei funcții

În mod implicit, nu se poate modifica o variabilă globală într -o funcție fără a o declara ca globală. Dacă încercați Python va ridica o eroare, deoarece tratează variabila ca locală. Pentru a modifica o variabilă globală, utilizați Cuvânt cheie global .

Fără global (cauzează eroare)

Python
def fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun() 

Ieșire

UnboundLocalError: Local Variable's 'S' menționat înainte de atribuire

Explicaţie: În interiorul Fun () Python presupune că este local, deoarece încercăm să -l modificăm. Dar nu există localuri locale înainte de această linie, deci apare o eroare.

Cu Global (funcționează corect)

Python
s = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s) 

Ieșire
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Explicaţie:

  • Declarând S Global îi spune lui Python să utilizeze variabila din domeniul de aplicare global.
  • Funcția anexa mai întâi „GFG” apoi reasignă s.
  • Modificările persistă în afara funcției.

Global vs local cu același nume

Python
a = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a) 

Ieșire
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Explicaţie:

  • f () tipărește global a fără a -l schimba.
  • G () creează un local local care pleacă global neatins.
  • h () declară A la nivel global și îl modifică.

Variabilă locală vs variabilă globală

Baza de comparație Variabilă globală Variabilă locală
DefiniţieDeclarat în afara funcțiilorDeclarat în interiorul unei funcții
Durata de viațăCreat atunci când programul începe și distrus când se terminăCreat atunci când funcția este numită și distrusă când se întoarce
Partajarea datelorPartajat pe toate funcțiileNu este împărtășit; există numai în funcția sa
Sfera de aplicarePoate fi accesat oriunde în programAccesibil numai în interiorul funcției
Parametri necesariNu este nevoie de trecerea parametrilorPoate fi creat prin parametri sau misiuni din cadrul funcției
DepozitareGestionat în spațiul de nume global (nu locație de memorie fixă)Stocat în spațiul de nume local al funcției (Stack Frame)
ValoareModificările afectează întregul programModificările sunt locale și nu afectează alte funcții