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.

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ţie Declarat în afara funcțiilor Declarat î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 datelor Partajat pe toate funcțiile Nu este împărtășit; există numai în funcția sa
Sfera de aplicare Poate fi accesat oriunde în program Accesibil numai în interiorul funcției
Parametri necesari Nu este nevoie de trecerea parametrilor Poate fi creat prin parametri sau misiuni din cadrul funcției
Depozitare Gestionat în spațiul de nume global (nu locație de memorie fixă) Stocat în spațiul de nume local al funcției (Stack Frame)
Valoare Modificările afectează întregul program Modificările sunt locale și nu afectează alte funcții