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.
Pythondef 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.
Pythonmsg = '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.
Pythondef 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)
Pythondef 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)
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)
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
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)
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 |
|---|---|---|
| Definicija | Deklarirano izvan funkcija | Deklarirano unutar funkcija |
| Doživotni | Stvoreno kad program započne i uništi kad završi | Stvoreno kad se funkcija pozove i uništi kad se vrati |
| Dijeljenje podataka | Dijele na svim funkcijama | Nije podijeljen; postoji samo unutar svoje funkcije |
| Opseg | Može se pristupiti bilo gdje u programu | Dostupno samo unutar funkcije |
| Potrebni parametri | Nije potreban nijedan parametar | Može se stvoriti kroz parametre ili zadatke unutar funkcije |
| Skladištenje | Upravljen u globalnom prostoru imena (nije fiksna memorijska lokacija) | Pohranjeno u lokalnom prostoru imena funkcije (okvir snopa) |
| Vrijednost | Promjene utječu na cijeli program | Promjene su lokalne i ne utječu na druge funkcije |