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 global
nø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 global
fordi vi brugte den x * 2
til 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 nonlocal
nø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.