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

I denne vejledning lærer du om Python Global-variabler, lokale variabler, ikke-lokale variabler og hvor de skal bruges.

Video: Python lokale og globale variabler

Globale variabler

I Python er en variabel, der er erklæret uden for funktionen eller i globalt omfang, kendt som en global variabel. Dette betyder, at en global variabel kan tilgås inden for eller uden for funktionen.

Lad os se et eksempel på, hvordan en global variabel oprettes i Python.

Eksempel 1: Opret en global variabel

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Produktion

 x indeni: global x udenfor: global

I ovenstående kode oprettede vi x som en global variabel og definerede a for foo()at udskrive den globale variabel x. Endelig kalder vi det, foo()der udskriver værdien af ​​x.

Hvad hvis du vil ændre værdien af ​​x inde i en funktion?

 x = "global" def foo(): x = x * 2 print(x) foo()

Produktion

 UnboundLocalError: lokal variabel 'x' henvist til tildeling

Outputtet viser en fejl, fordi Python behandler x som en lokal variabel, og x er heller ikke defineret indeni foo().

For at få dette til at fungere bruger vi globalnøgleordet. Besøg Python Global Keyword for at lære mere.

Lokale variabler

En variabel, der er erklæret inde i funktionens krop eller i det lokale omfang, er kendt som en lokal variabel.

Eksempel 2: Adgang til lokal variabel uden for omfanget

 def foo(): y = "local" foo() print(y)

Produktion

 NameError: navn 'y' er ikke defineret

Outputtet viser en fejl, fordi vi prøver at få adgang til en lokal variabel y i et globalt omfang, mens den lokale variabel kun fungerer inden for foo()eller lokalt omfang.

Lad os se et eksempel på, hvordan en lokal variabel oprettes i Python.

Eksempel 3: Opret en lokal variabel

Normalt erklærer vi en variabel inde i funktionen for at oprette en lokal variabel.

 def foo(): y = "local" print(y) foo()

Produktion

 lokal

Lad os se på det tidligere problem, hvor x var en global variabel, og vi ønskede at ændre x indeni foo().

Globale og lokale variabler

Her viser vi, hvordan man bruger globale variabler og lokale variabler i samme kode.

Eksempel 4: Brug af globale og lokale variabler i samme kode

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Produktion

 globalt globalt lokalt

I ovenstående kode erklærer vi x som en global og y som en lokal variabel i foo(). Derefter bruger vi multiplikationsoperator *til at ændre den globale variabel x, og vi udskriver både x og y.

Efter at have ringet til foo()bliver værdien af ​​x global globalfordi vi brugte den x * 2til at udskrive to gange global. Efter det, vi udskriver værdien af lokal variabel y dvs 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)

Produktion

 lokal x: 10 global x: 5

I ovenstående kode brugte vi det samme navn x til både global variabel og lokal variabel. Vi får et andet resultat, når vi udskriver den samme variabel, fordi variablen er deklareret i begge omfang, dvs. det lokale omfang indeni foo()og det globale omfang uden for 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 ovenstående kode er der en indlejret inner()funktion. Vi bruger nonlocalnøgleord til at oprette en ikke-lokal variabel. Den inner()Funktionen defineres i omfanget af en anden funktion outer().

Bemærk : Hvis vi ændrer værdien af ​​en ikke-lokal variabel, vises ændringerne i den lokale variabel.

Interessante artikler...