Python globala, lokala och icke-lokala variabler (med exempel)

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 globalnyckelordet. 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 globalför att vi använde det för x * 2att 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 nonlocalnyckelord 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.

Intressanta artiklar...