I denne artikel lærer du om det globale søgeord, den globale variabel, og hvornår du skal bruge globale nøgleord.
Inden du læser denne artikel, skal du sørge for, at du har nogle grundlæggende oplysninger om Python Global, Local og Nonlocal Variables.
Hvad er det globale nøgleord
I Python giver global
nøgleordet dig mulighed for at ændre variablen uden for det nuværende omfang. Det bruges til at oprette en global variabel og foretage ændringer i variablen i en lokal sammenhæng.
Regler for globale søgeord
De grundlæggende regler for global
nøgleord i Python er:
- Når vi opretter en variabel inde i en funktion, er den som standard lokal.
- Når vi definerer en variabel uden for en funktion, er den som standard global. Du behøver ikke at bruge
global
nøgleord. - Vi bruger
global
nøgleord til at læse og skrive en global variabel inde i en funktion. - Brug af
global
nøgleord uden for en funktion har ingen effekt.
Brug af globalt nøgleord
Lad os tage et eksempel.
Eksempel 1: Adgang til global variabel inde fra en funktion
c = 1 # global variable def add(): print(c) add()
Når vi kører ovenstående program, vil output være:
1
Vi kan dog have nogle scenarier, hvor vi har brug for at ændre den globale variabel inde fra en funktion.
Eksempel 2: Ændring af global variabel fra funktionens indre
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Når vi kører ovenstående program, viser output en fejl:
UnboundLocalError: der henvises til lokal variabel 'c' før tildeling
Dette skyldes, at vi kun kan få adgang til den globale variabel, men ikke kan ændre den indefra i funktionen.
Løsningen på dette er at bruge global
nøgleordet.
Eksempel 3: Ændring af global variabel fra en funktion ved hjælp af global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Når vi kører ovenstående program, vil output være:
Inde tilføj (): 2 Hoved: 2
I ovenstående program definerer vi c som et globalt nøgleord inde i add()
funktionen.
Så, vi øg variablen c ved 1
, det vil sige c = c + 2
. Derefter kalder vi add()
funktionen. Endelig udskriver vi den globale variabel c.
Som vi kan se, skete der også ændringer på den globale variabel uden for funktionen c = 2
.
Globale variabler på tværs af Python-moduler
I Python opretter vi et enkelt modul config.py
til at indeholde globale variabler og dele information på tværs af Python-moduler inden for det samme program.
Her er hvordan vi kan dele globale variabler på tværs af python-modulerne.
Eksempel 4: Del en global variabel på tværs af Python-moduler
Opret en config.py
fil for at gemme globale variabler
a = 0 b = "empty"
Opret en update.py
fil for at ændre globale variabler
import config config.a = 10 config.b = "alphabet"
Opret en main.py
fil for at teste ændringer i værdi
import config import update print(config.a) print(config.b)
Når vi kører main.py
filen, bliver output
10 alfabet
I ovenstående har vi skabt tre filer: config.py
, update.py
, og main.py
.
Modulet config.py
gemmer globale variabler af a og b. I update.py
filen importerer vi config.py
modulet og ændrer værdierne for a og b. På samme måde main.py
importerer vi begge filer config.py
og update.py
modulet i filen . Endelig udskriver vi og tester værdierne for globale variabler, om de ændres eller ej.
Global i indlejrede funktioner
Her er hvordan du kan bruge en global variabel i indlejret funktion.
Eksempel 5: Brug af en global variabel i indlejret funktion
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
Outputtet er:
Før opkaldsbjælke: 20 Opkaldsbjælke nu Efter opkaldsbjælke: 20 x i hovedsagen: 25
I ovenstående program erklærede vi en global variabel inde i den indlejrede funktion bar()
. Inde i foo()
funktion har x ingen effekt af det globale nøgleord.
Før og efter kald bar()
, variablen x tager værdien af lokal variabel dvs x = 20
. Uden for foo()
funktion, vil variablen x tage værdien defineret i bar()
funktion dvs x = 25
. Dette skyldes, at vi har brugt global
nøgleord i x til at skabe global variabel inde i bar()
funktionen (lokalt omfang).
Hvis vi foretager ændringer inde i bar()
funktion, vises ændringerne uden for det lokale omfang, det vil sige foo()
.