Globale og lokale variabler i Python

I Python -variabler spiller en nøkkelrolle i lagring og administrasjon av data. Deres oppførsel og tilgjengelighet avhenger av hvor de er definert i programmet. I denne artikkelen skal vi utforske globale og lokale variabler hvordan de fungerer og vanlige scenarier med eksempler.

Lokale variabler

Lokale variabler opprettes i en funksjon og eksisterer bare under utførelsen. De kan ikke nås utenfra utenfor funksjonen.

Eksempel 1: I denne koden lager vi og får tilgang til en lokal variabel i en funksjon.

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

Produksjon
Hello from inside the function!  

Forklaring: Vi definerer hilse() med en lokal variabel msg og skriv den ut. Siden MSG bare eksisterer under funksjonens utførelse, er det tilgjengelig i funksjonen. Ringer hilse() Viser meldingen.

Eksempel 2 : I dette eksemplet lager vi en lokal variabel i en funksjon og prøver deretter å få tilgang til den utenfor funksjonen som forårsaker en feil.

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

Produksjon

Traceback (siste samtale sist):
Fil '/home/guest/sandbox/solution.py' linje 6 i
trykk ('Outside Function:' MSG)
NameError: Navn 'Msg' er ikke definert

Forklaring: MSG er en lokal variabel inne hilse() og kan bare nås der. Å skrive den ut utenfor forårsaker en feil fordi den ikke eksisterer globalt.

Globale variabler

Globale variabler er deklarert utenfor alle funksjoner og kan nås hvor som helst i programmet inkludert innvendige funksjoner.

I dette eksemplet oppretter vi en global variabel og får deretter tilgang til den både i og utenfor en funksjon.

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

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

Forklaring: MSG er en global variabel tilgjengelig både i og utenfor utstilling() funksjon. Ringer utstilling() skriver ut det globale msg og utskrift msg Utenfor fungerer funksjonen som forventet.

Note: Hvis en variabel ikke finnes i en funksjon (lokalt omfang) ser Python automatisk etter den i globalt omfang. Men hvis en lokal variabel har samme navn som en global, vil den skygge global variabel inne i den funksjonen.

Bruk av lokale og globale variabler

Hvis en variabel er definert både globalt og lokalt med samme navn, skygger den lokale variabelen den globale variabelen inne i funksjonen. Endringer i den lokale variabelen påvirker ikke den globale variabelen med mindre du eksplisitt erklærer variabelen som global.

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

Produksjon
Me too. I love Geeksforgeeks  

Forklaring: Inni moro() s er en lokal variabel satt til 'meg også.' og skriver ut den verdien. Utenfor det globale s forblir 'Jeg elsker geeksforgeeks' så utskrift s Etterpå viser den globale verdien.

Endre globale variabler i en funksjon

Som standard kan man ikke endre en global variabel i en funksjon uten å erklære den som global. Hvis du prøver at Python vil øke en feil fordi den behandler variabel som lokal. For å endre en global variabel bruk Globalt nøkkelord .

Uten global (forårsaker feil)

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

Produksjon

UnboundlocArror: Local Variable 's' referert til før tildeling

Forklaring: Inne i moro () Python antar at S er lokal siden vi prøver å endre det. Men ingen lokale er før den linjen slik at det oppstår en feil.

Med global (fungerer riktig)

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  )   

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

Forklaring:

  • Å erklære S som Global ber Python om å bruke variabelen fra det globale omfanget.
  • Funksjonen legger først til 'GFG' deretter omfordeler s.
  • Endringer vedvarer utenfor funksjonen.

Global VS Local med samme navn

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  )   

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

Forklaring:

  • f () skriver ut global a uten å endre det.
  • g () skaper en lokal en forlater global uberørt.
  • h () erklærer en som global og endrer den.

Lokal variabel vs global variabel

Sammenligningsbasis Global variabel Lokal variabel
Definisjon Erklært utenfor funksjonene Erklært i en funksjon
Levetid Opprettet når programmet starter og ødelagt når det slutter Opprettet når funksjonen kalles og ødelegges når den kommer tilbake
Datadeling Delt på tvers av alle funksjoner Ikke delt; eksisterer bare innenfor dens funksjon
Omfang Kan nås hvor som helst i programmet Bare tilgjengelig i funksjonen
Parametere som trengs Ingen parameterpassering nødvendig Kan opprettes gjennom parametere eller oppgaver i funksjonen
Lagring Administrert i det globale navneområdet (ikke fast minneplass) Lagret i funksjonens lokale navneområde (stabelramme)
Verdi Endringer påvirker hele programmet Endringer er lokale og påvirker ikke andre funksjoner