Python Global Keyword (med eksempler)

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 globalnø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 globalnø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 globalnøgleord.
  • Vi bruger globalnøgleord til at læse og skrive en global variabel inde i en funktion.
  • Brug af globalnø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 globalnø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.pytil 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.pyfil for at gemme globale variabler

 a = 0 b = "empty"

Opret en update.pyfil for at ændre globale variabler

 import config config.a = 10 config.b = "alphabet"

Opret en main.pyfil for at teste ændringer i værdi

 import config import update print(config.a) print(config.b)

Når vi kører main.pyfilen, bliver output

 10 alfabet

I ovenstående har vi skabt tre filer: config.py, update.py, og main.py.

Modulet config.pygemmer globale variabler af a og b. I update.pyfilen importerer vi config.pymodulet og ændrer værdierne for a og b. På samme måde main.pyimporterer vi begge filer config.pyog update.pymodulet 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 globalnø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().

Interessante artikler...