I denne opplæringen lærer du om Python Global-variabler, lokale variabler, ikke-lokale variabler og hvor du skal bruke dem.
Video: Python lokale og globale variabler
Globale variabler
I Python er en variabel erklært utenfor funksjonen eller i globalt omfang kjent som en global variabel. Dette betyr at en global variabel kan nås innenfor eller utenfor funksjonen.
La oss se et eksempel på hvordan en global variabel opprettes i Python.
Eksempel 1: Opprett en global variabel
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Produksjon
x innsiden: global x utenfor: global
I koden ovenfor opprettet vi x som en global variabel og definerte a for foo()
å skrive ut den globale variabelen x. Til slutt kaller vi det foo()
som vil skrive ut verdien på x.
Hva om du vil endre verdien av x i en funksjon?
x = "global" def foo(): x = x * 2 print(x) foo()
Produksjon
UnboundLocalError: lokal variabel 'x' referert før tildeling
Utgangen viser en feil fordi Python behandler x som en lokal variabel, og x er heller ikke definert inne foo()
.
For å få dette til å fungere bruker vi global
nøkkelordet. Besøk Python Global Keyword for å lære mer.
Lokale variabler
En variabel deklarert inne i funksjonens kropp eller i det lokale omfanget er kjent som en lokal variabel.
Eksempel 2: Få tilgang til lokal variabel utenfor omfanget
def foo(): y = "local" foo() print(y)
Produksjon
NameError: navnet 'y' er ikke definert
Utgangen viser en feil fordi vi prøver å få tilgang til en lokal variabel y i et globalt omfang, mens den lokale variabelen bare fungerer innenfor foo()
eller lokalt omfang.
La oss se et eksempel på hvordan en lokal variabel opprettes i Python.
Eksempel 3: Opprett en lokal variabel
Normalt erklærer vi en variabel i funksjonen for å opprette en lokal variabel.
def foo(): y = "local" print(y) foo()
Produksjon
lokal
La oss se på det tidligere problemet hvor x var en global variabel, og vi ønsket å endre x inne foo()
.
Globale og lokale variabler
Her vil vi vise hvordan du bruker globale variabler og lokale variabler i samme kode.
Eksempel 4: Bruk av globale og lokale variabler i samme kode
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Produksjon
global global lokal
I koden ovenfor erklærer vi x som en global og y som en lokal variabel i foo()
. Deretter bruker vi multiplikasjonsoperator for *
å endre den globale variabelen x, og vi skriver ut både x og y.
Etter å ha ringt til foo()
blir verdien av x global global
fordi vi brukte den x * 2
til å skrive ut to ganger global
. Etter det vi skriver ut verdien av lokal variabel y altså local
.
Eksempel 5: Global variabel og lokal variabel med samme navn
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Produksjon
lokal x: 10 global x: 5
I koden ovenfor brukte vi samme navn x for både global variabel og lokal variabel. Vi får et annet resultat når vi skriver ut den samme variabelen fordi variabelen blir deklarert i begge omfang, dvs. det lokale omfanget innenfor foo()
og det globale omfanget utenfor foo()
.
Når vi skriver ut variabelen i foo()
den, kommer den ut local x: 10
. Dette kalles variabelens lokale omfang.
På samme måte, når vi skriver ut variabelen utenfor foo()
, gir den global x: 5. Dette kalles det globale omfanget av variabelen.
Ikke-lokale variabler
Ikke-lokale variabler brukes i nestede funksjoner hvis lokale omfang ikke er definert. Dette betyr at variabelen verken kan være i det lokale eller globale omfanget.
La oss se et eksempel på hvordan en ikke-lokal variabel brukes i Python.
Vi bruker nonlocal
nøkkelord for å lage variabler som ikke er lokale.
Eksempel 6: Opprett en variabel som ikke er lokal
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Produksjon
indre: ikke-lokal ytre: ikke-lokal
I koden ovenfor er det en nestet inner()
funksjon. Vi bruker nonlocal
nøkkelord for å lage en variabel som ikke er lokal. Den inner()
funksjon som er angitt i virkeområdet for en annen funksjon outer()
.
Merk : Hvis vi endrer verdien til en variabel som ikke er lokal, vises endringene i den lokale variabelen.