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 |