Python globale, lokale og ikke-lokale variabler (med eksempler)

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 globalnø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 globalfordi vi brukte den x * 2til å 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 nonlocalnø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 nonlocalnø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.

Interessante artikler...