logo

Globalne i lokalne varijable u Pythonu

U Python varijable igraju ključnu ulogu u pohranjivanju i upravljanju podacima. Njihovo ponašanje i pristupačnost ovise o tome gdje su definirani u programu. U ovom ćemo članku istražiti globalne i lokalne varijable kako rade i uobičajene scenarije s primjerima.

Lokalne varijable

Lokalne varijable stvaraju se unutar neke funkcije i postoje samo tijekom njegovog izvršenja. Ne može im se pristupiti izvan funkcije.



objektna klasa u Javi

Primjer 1: U ovom kodu stvaramo i pristupamo lokalnoj varijabli unutar neke funkcije.

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

Izlaz
Hello from inside the function! 

Obrazloženje: Mi definiramo pozdraviti() s lokalnom varijablom msg i ispisati ga. Budući da MSG postoji samo tijekom izvršenja funkcije, pristupa se unutar funkcije. Poziv pozdraviti() Prikazuje poruku.

Primjer 2 : U ovom primjeru stvaramo lokalnu varijablu unutar neke funkcije, a zatim pokušavamo pristupiti izvan funkcije koja uzrokuje pogrešku.



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

Izlaz

Traceback (posljednji poziv zadnji):
Datoteka '/HOME/GUEST/SANDBOX/SOLUTION.PY' LINE 6 U
ispis ('vanjska funkcija:' msg)
NameError: Naziv 'MSG' nije definirano

Objašnjenje: MSG je lokalna varijabla iznutra pozdraviti() i tamo se može pristupiti samo. Ispis izvana uzrokuje pogrešku jer ne postoji globalno.



Globalne varijable

Globalne varijable deklariraju se izvan svih funkcija i mogu se pristupiti bilo gdje u programu, uključujući unutarnje funkcije.

U ovom primjeru stvaramo globalnu varijablu, a zatim joj pristupamo i unutar i izvan funkcije.

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

Izlaz
Inside function: Python is awesome! Outside function: Python is awesome! 

Objašnjenje: MSG je globalna varijabla dostupna i unutar i izvan nje prikaz() funkcija. Poziv prikaz() ispisuje globalno msg i tiskanje msg Izvan funkcije funkcionira kako se očekivalo.

Bilješka: Ako se varijabla ne nađe unutar funkcije (lokalni opseg) Python automatski traži je u globalnom opsegu. Međutim, ako lokalna varijabla ima isto ime kao i globalna, zasjenjit će globalnu varijablu unutar te funkcije.

Upotreba lokalnih i globalnih varijabli

Ako je varijabla definirana i globalno i lokalno s istim imenom, lokalna varijabla sjena globalna varijabla unutar funkcije. Promjene lokalne varijable ne utječu na globalnu varijablu, osim ako varijablu izričito ne proglasite globalnom.

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

Izlaz
Me too. I love Geeksforgeeks 

Obrazloženje: Unutrašnjost zabava() s je lokalna varijabla postavljena na 'I ja'. i ispisuje tu vrijednost. Izvan globalnog s ostaje 'volim geeksforgeek' pa tiskanje s Nakon toga pokazuje globalnu vrijednost.

Modificiranje globalnih varijabli unutar funkcije

Prema zadanim postavkama ne može izmijeniti globalnu varijablu unutar neke funkcije bez proglašenja globalnim. Ako pokušate da Python potakne pogrešku jer tretira varijablu kao lokalnu. Za izmjenu globalne varijable Koristite Globalna ključna riječ .

Bez globalne (uzrokuje pogrešku)

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

Izlaz

UnboundLocaleror: Lokalna varijabla 's' S opisana prije dodjele

Obrazloženje: Unutar zabave () Python pretpostavlja da je lokalni jer ga pokušavamo izmijeniti. Ali prije tog retka ne postoji lokalno s tako da se dogodi pogreška.

S globalnim (ispravno djeluje)

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) 

Izlaz
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Obrazloženje:

  • Izjava S Global kaže Pythonu da koristi varijablu iz globalnog opsega.
  • Funkcija najprije dodaje 'GFG', a zatim dodijeli s.
  • Promjene traju izvan funkcije.

Global vs Local s istim imenom

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) 

Izlaz
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Obrazloženje:

  • f () ispisuje globalni a bez promjene.
  • g () stvara lokalni a koji ostavlja globalni netaknut.
  • H () izjavljuje kao globalno i mijenja.

Lokalna varijabla vs globalna varijabla

Osnova usporedbe Globalna varijabla Lokalna varijabla
DefinicijaDeklarirano izvan funkcijaDeklarirano unutar funkcija
DoživotniStvoreno kad program započne i uništi kad završiStvoreno kad se funkcija pozove i uništi kad se vrati
Dijeljenje podatakaDijele na svim funkcijamaNije podijeljen; postoji samo unutar svoje funkcije
OpsegMože se pristupiti bilo gdje u programuDostupno samo unutar funkcije
Potrebni parametriNije potreban nijedan parametarMože se stvoriti kroz parametre ili zadatke unutar funkcije
SkladištenjeUpravljen u globalnom prostoru imena (nije fiksna memorijska lokacija)Pohranjeno u lokalnom prostoru imena funkcije (okvir snopa)
VrijednostPromjene utječu na cijeli programPromjene su lokalne i ne utječu na druge funkcije