V Python spremenljivkah igrajo ključno vlogo pri shranjevanju in upravljanju podatkov. Njihovo vedenje in dostopnost sta odvisna od tega, kje sta opredeljena v programu. V tem članku bomo raziskali globalne in lokalne spremenljivke, kako delujejo, in skupne scenarije s primeri.
Lokalne spremenljivke
Lokalne spremenljivke so ustvarjene znotraj funkcije in obstajajo le med njegovo izvedbo. Do njih ni mogoče dostopati zunaj funkcije.
java primerljiv vmesnik
Primer 1: V tej kodi ustvarjamo in dostopamo do lokalne spremenljivke znotraj funkcije.
Pythondef greet(): msg = 'Hello from inside the function!' print(msg) greet()
Izhod
Hello from inside the function!
Pojasnilo: Definiramo pozdrav () z lokalno spremenljivko MSG in natisnite. Ker MSG obstaja samo med izvajanjem funkcije, je dostopen v funkciji. Klicati pozdrav () Prikaže sporočilo.
Primer 2 : V tem primeru ustvarjamo lokalno spremenljivko znotraj funkcije in nato poskušamo dostopati do nje zunaj funkcije, ki povzroči napako.
Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg)
Izhod
Traceback (zadnji klic zadnji):
Datoteka '/home/guest/sandbox/solution.py' vrstica 6 v
Print ("Zunanja funkcija:" msg)
Nameerror: ime 'msg' ni definirano
Pojasnilo: MSG je lokalna spremenljivka v notranjosti pozdrav () in do njega lahko dostopate le tam. Tiskanje zunaj povzroči napako, ker ne obstaja globalno.
Globalne spremenljivke
Globalne spremenljivke so razglašene zunaj vseh funkcij in do njih lahko dostopate kjer koli v programu, vključno z notranjimi funkcijami.
V tem primeru ustvarjamo globalno spremenljivko in nato dostopamo do nje tako znotraj kot zunaj funkcije.
Pythonmsg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg)
Izhod
Inside function: Python is awesome! Outside function: Python is awesome!
Pojasnilo: MSG je globalna spremenljivka, dostopna tako znotraj kot zunaj display () delovanje. Klicati display () Natisne globalno MSG in tiskanje MSG Zunaj funkcije deluje, kot je bilo pričakovano.
Opomba: Če spremenljivke ne najdemo znotraj funkcije (lokalnega obsega), jo Python samodejno išče v globalnem obsegu. Če pa ima lokalna spremenljivka isto ime kot globalna, bo v tej funkciji senčila globalno spremenljivko.
Uporaba lokalnih in globalnih spremenljivk
Če je spremenljivka definirana tako globalno kot lokalno z istim imenom, lokalna spremenljivka senčila globalna spremenljivka znotraj funkcije. Spremembe lokalne spremenljivke ne vplivajo na globalno spremenljivko, razen če spremenljivko izrecno razglasite kot globalno.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Izhod
Me too. I love Geeksforgeeks
Pojasnilo: Noter zabavno () s je lokalna spremenljivka, ki je nastavljena na "tudi jaz". in natisne to vrednost. Zunaj globalnega s ostaja "obožujem geeksforgeeks", tako tiskanje s zatem prikazuje globalno vrednost.
Spreminjanje globalnih spremenljivk znotraj funkcije
Privzeto ne moremo spremeniti globalne spremenljivke znotraj funkcije, ne da bi jo razglasili za globalno. Če poskusite Python, bo povečal napako, ker spremenljiv kot lokalno obravnava spremenljivko. Za spremembo globalne spremenljivke uporabite globalna ključna beseda .
Brez globalnega (povzroči napako)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Izhod
UnBoundLocalerRor: Lokalna spremenljivka 's' sklicuje pred dodelitvijo
Pojasnilo: Inside Fun () Python predpostavlja, da je S lokalni, saj ga skušamo spremeniti. Toda pred to vrstico ni lokalnega S, zato pride do napake.
Z globalno (pravilno deluje)
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)
Izhod
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section
Pojasnilo:
- Razglasitev S kot Global pravi Pythonu, naj spremenljivko uporabi iz globalnega obsega.
- Funkcija najprej doda 'GFG', nato prerazporedi s.
- Spremembe obstajajo zunaj funkcije.
Global in Local z 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)
Izhod
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3
Pojasnilo:
- f () natisne globalno A, ne da bi ga spremenil.
- G () ustvari lokalnega zapuščanja, ki je bil nedotaknjen.
- H () razglasi a kot globalno in ga spreminja.
Lokalna spremenljivka proti globalni spremenljivki
| Osnove za primerjavo | Globalna spremenljivka | Lokalna spremenljivka |
|---|---|---|
| Opredelitev | Razglašeno zunaj funkcij | Razglašeno znotraj funkcij |
| Življenjska doba | Ustvarjen, ko se program začne in uniči, ko se konča | Ustvarjena, ko se funkcija pokliče in uniči, ko se vrne |
| Skupna raba podatkov | V skupni rabi vseh funkcij | Ni skupna; obstaja samo znotraj njegove funkcije |
| Obseg | Dostopati lahko kjer koli v programu | Dostopen samo znotraj funkcije |
| Potrebni parametri | Ni potrebno, da ni potrebno | Lahko nastane s parametri ali nalogami znotraj funkcije |
| Skladiščenje | Upravljanje v globalnem imenskem prostoru (ni fiksne lokacije pomnilnika) | Shranjeno v lokalnem imenski prostor funkcije (okvir sklad) |
| Vrednost | Spremembe vplivajo na celoten program | Spremembe so lokalne in ne vplivajo na druge funkcije |