I den här handledningen lär du dig om Python Global-variabler, lokala variabler, icke-lokala variabler och var du ska använda dem.
Video: Python lokala och globala variabler
Globala variabler
I Python är en variabel som deklareras utanför funktionen eller i global omfattning känd som en global variabel. Detta innebär att en global variabel kan nås inom eller utanför funktionen.
Låt oss se ett exempel på hur en global variabel skapas i Python.
Exempel 1: Skapa en global variabel
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Produktion
x inuti: global x utanför: global
I koden ovan skapade vi x som en global variabel och definierade a för foo()
att skriva ut den globala variabeln x. Slutligen kallar vi det foo()
som kommer att skriva ut värdet på x.
Vad händer om du vill ändra x-värdet i en funktion?
x = "global" def foo(): x = x * 2 print(x) foo()
Produktion
UnboundLocalError: lokal variabel 'x' som refereras före tilldelning
Utdata visar ett fel eftersom Python behandlar x som en lokal variabel och x inte heller definieras inuti foo()
.
För att detta ska fungera använder vi global
nyckelordet. Besök Python Global Keyword för att lära dig mer.
Lokala variabler
En variabel som deklareras i funktionens kropp eller i det lokala omfånget är känd som en lokal variabel.
Exempel 2: Åtkomst till lokal variabel utanför omfattningen
def foo(): y = "local" foo() print(y)
Produktion
NameError: namnet 'y' är inte definierat
Utdata visar ett fel eftersom vi försöker komma åt en lokal variabel y i ett globalt omfång medan den lokala variabeln bara fungerar inom foo()
eller lokalt.
Låt oss se ett exempel på hur en lokal variabel skapas i Python.
Exempel 3: Skapa en lokal variabel
Normalt deklarerar vi en variabel inuti funktionen för att skapa en lokal variabel.
def foo(): y = "local" print(y) foo()
Produktion
lokal
Låt oss ta en titt på det tidigare problemet där x var en global variabel och vi ville ändra x inuti foo()
.
Globala och lokala variabler
Här visar vi hur man använder globala variabler och lokala variabler i samma kod.
Exempel 4: Använd globala och lokala variabler i samma kod
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Produktion
globalt globalt lokalt
I ovanstående kod förklarar vi x som en global och y som en lokal variabel i foo()
. Sedan använder vi multiplikationsoperatören för *
att modifiera den globala variabeln x och vi skriver ut både x och y.
Efter att ha ringt till foo()
blir värdet på x global global
för att vi använde det för x * 2
att skriva ut två gånger global
. Efter det vi skriver ut värdet av den lokala variabeln y dvs local
.
Exempel 5: Global variabel och lokal variabel med samma namn
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Produktion
lokal x: 10 global x: 5
I ovanstående kod använde vi samma namn x för både global variabel och lokal variabel. Vi får ett annat resultat när vi skriver ut samma variabel eftersom variabeln deklareras i båda omfången, dvs det lokala omfånget foo()
och det globala omfånget utanför foo()
.
When we print the variable inside foo()
it outputs local x: 10
. This is called the local scope of the variable.
Similarly, when we print the variable outside the foo()
, it outputs global x: 5. This is called the global scope of the variable.
Nonlocal Variables
Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.
Let's see an example of how a nonlocal variable is used in Python.
We use nonlocal
keywords to create nonlocal variables.
Example 6: Create a nonlocal variable
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
I ovanstående kod finns en kapslad inner()
funktion. Vi använder nonlocal
nyckelord för att skapa en icke-lokal variabel. Den inner()
funktionen är definierad inom ramen för en annan funktion outer()
.
Obs : Om vi ändrar värdet för en icke-lokal variabel, visas ändringarna i den lokala variabeln.