logo

Globalne in lokalne spremenljivke v Pythonu

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.

Python
def 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.

Python
msg = '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.

Python
def 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)

Python
def 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)

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) 

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

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) 

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
OpredelitevRazglašeno zunaj funkcijRazglašeno znotraj funkcij
Življenjska dobaUstvarjen, ko se program začne in uniči, ko se končaUstvarjena, ko se funkcija pokliče in uniči, ko se vrne
Skupna raba podatkovV skupni rabi vseh funkcijNi skupna; obstaja samo znotraj njegove funkcije
ObsegDostopati lahko kjer koli v programuDostopen samo znotraj funkcije
Potrebni parametriNi potrebno, da ni potrebnoLahko nastane s parametri ali nalogami znotraj funkcije
SkladiščenjeUpravljanje v globalnem imenskem prostoru (ni fiksne lokacije pomnilnika)Shranjeno v lokalnem imenski prostor funkcije (okvir sklad)
VrednostSpremembe vplivajo na celoten programSpremembe so lokalne in ne vplivajo na druge funkcije