Î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.
Pythondef 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.
Pythonmsg = '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ă.
Pythondef 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)
Pythondef 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)
Pythons = '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
Pythona = 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 |