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.

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
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