logo

Globális és helyi változók a Pythonban

A Python változókban kulcsszerepet játszanak az adatok tárolásában és kezelésében. Viselkedésük és akadálymentességük attól függ, hogy hol vannak meghatározva a programban. Ebben a cikkben a globális és a helyi változókat vizsgáljuk meg, hogyan működnek, és a közös forgatókönyveket példákkal.

Helyi változók

A helyi változókat egy függvényen belül hozták létre, és csak annak végrehajtása során léteznek. Nem érhetők el a funkción kívül.

youtube videók letöltése vlc

1. példa: Ebben a kódban egy helyi változót hozunk létre és hozzáférünk egy függvényen belül.



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

Kibocsátás
Hello from inside the function! 

Magyarázat: Meghatározzuk köszönt() egy helyi változóval MSG És nyomtassa ki. Mivel az MSG csak a funkció végrehajtása során létezik, a függvényen belül elérhető. Hívás köszönt() Megjeleníti az üzenetet.

2. példa : Ebben a példában egy helyi változót hozunk létre egy függvényen belül, majd megpróbáljuk hozzáférni annak olyan függvényen kívül, amely hibát okoz.

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

Kibocsátás

Traceback (a legfrissebb hívás utoljára):
Fájl '/home/guest/sandbox/solution.py' 6. sor
Nyomtatás ('KÜLSŐ FUNKCIÓ:' MSG)
NAMERROR: A 'MSG' név nincs meghatározva

Magyarázat: MSG egy helyi változó van benne köszönt() és csak ott lehet elérni. A külső kinyomtatása hibát okoz, mert nem létezik globálisan.

Globális változók

A globális változókat minden funkción kívül deklarálják, és a program bármely pontján hozzáférhetők, beleértve a belső funkciókat is.

Ebben a példában létrehozunk egy globális változót, majd hozzáférünk egy függvényen belül és kívül.

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

Kibocsátás
Inside function: Python is awesome! Outside function: Python is awesome! 

Magyarázat: MSG egy globális változó, amely mind belül, mind kívül elérhető kijelző() funkció. Hívás kijelző() kinyomtatja a globális MSG és nyomtatás MSG A funkción kívül a várt módon működik.

Jegyzet: Ha egy változó nem található meg egy függvényben (helyi hatókör), a Python automatikusan keresi a globális hatókörben. Ha azonban egy helyi változónak megegyezik a globális névvel, akkor a globális változót árnyékolja a funkció belsejében.

Helyi és globális változók használata

Ha egy változót világszerte és helyben is meghatároznak, ugyanazzal a névvel, akkor a helyi változó árnyékolja a globális változót a függvényen belül. A helyi változó változásai nem befolyásolják a globális változót, hacsak kifejezetten a változót globálisnak nyilvánítják.

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

Kibocsátás
Me too. I love Geeksforgeeks 

Magyarázat: Belső szórakoztató () S egy helyi változó, amely a 'Me Too' -hoz van beállítva. és kinyomtatja ezt az értéket. A globálison kívül S maradjon „szeretem a geeksforgeekks” így a nyomtatást S Utána megmutatja a globális értéket.

A globális változók módosítása egy függvényen belül

Alapértelmezés szerint nem módosíthatja a globális változót egy függvényen belül anélkül, hogy globálisnak nyilvánítaná. Ha kipróbálja a Python, akkor hibát okoz, mert a változót helyiként kezeli. A globális változó módosításához használja a globális kulcsszó -

Globális nélkül (hibát okoz)

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

Kibocsátás

UnontoundlocalError: Az 'S' helyi változó hivatkozik a hozzárendelés előtt

Magyarázat: Inside Fun () Python feltételezi, hogy S local, mivel megpróbáljuk módosítani. De a sor előtt nincs helyi S, így hiba következik be.

A globális (helyesen működik)

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) 

Kibocsátás
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Magyarázat:

  • Az S globális bejelentése azt mondja Pythonnak, hogy használja a globális hatókör változóját.
  • A funkció először a „GFG” -et csatolja, majd kinevezi az S -t.
  • A változások a funkción kívül fennmaradnak.

Globális vs helyi azonos nevű

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) 

Kibocsátás
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Magyarázat:

  • f () a globális A -t nyomtatja, anélkül, hogy megváltoztatná.
  • g () létrehoz egy helyi A -t, hogy a globális lehetőséget érintetlenül hagyja el.
  • h () az A -t globálisnak nyilvánítja, és módosítja azt.

Helyi változó vs globális változó

Összehasonlítás Globális változó Helyi változó
MeghatározásA funkciókon kívül bejelentettékEgy funkciókon belül deklarálták
ÉlettartamAkkor jött létre, amikor a program elindul és megsemmisül, amikor véget érAkkor hozták létre, amikor a funkciót hívják és megsemmisítik, amikor visszatér
AdatmegosztásMinden funkcióban megosztvaNem osztották meg; csak a funkcióján belül létezik
HatókörHozzáférhető a program bárholCsak a funkción belül érhető el
Szükséges paraméterekNincs szükség paraméter átadásáraLétrehozható a függvényen belüli paraméterekkel vagy hozzárendelésekkel
TárolásA globális névtérben kezelve (nem rögzített memória helye)A funkció helyi névtérben tárolva (verem keret)
ÉrtékA változások befolyásolják a teljes programotA változások helyi és nem befolyásolják más funkciókat