I denne artikkelen lærer du om det globale søkeordet, den globale variabelen og når du skal bruke globale søkeord.
Før du leser denne artikkelen, må du sørge for at du har noen grunnleggende om Python Global, Local og Nonlocal Variables.
Hva er det globale søkeordet
I Python global
lar nøkkelord deg endre variabelen utenfor gjeldende omfang. Den brukes til å lage en global variabel og gjøre endringer i variabelen i en lokal sammenheng.
Regler for globale søkeord
De grunnleggende reglene for global
nøkkelord i Python er:
- Når vi oppretter en variabel i en funksjon, er den lokal som standard.
- Når vi definerer en variabel utenfor en funksjon, er den global som standard. Du trenger ikke å bruke
global
nøkkelord. - Vi bruker
global
nøkkelord for å lese og skrive en global variabel i en funksjon. - Bruk av
global
nøkkelord utenfor en funksjon har ingen effekt.
Bruk av globale søkeord
La oss ta et eksempel.
Eksempel 1: Få tilgang til global variabel fra innsiden av en funksjon
c = 1 # global variable def add(): print(c) add()
Når vi kjører programmet ovenfor, vil utdataene være:
1
Vi kan imidlertid ha noen scenarier der vi trenger å endre den globale variabelen fra en funksjon.
Eksempel 2: Endring av global variabel fra innsiden av funksjonen
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Når vi kjører programmet ovenfor, viser utgangen en feil:
UnboundLocalError: lokal variabel 'c' det henvises til før tildelingen
Dette er fordi vi bare har tilgang til den globale variabelen, men ikke kan endre den fra funksjonen.
Løsningen for dette er å bruke global
nøkkelordet.
Eksempel 3: Endring av global variabel fra innsiden av en funksjon ved bruk av 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 kjører programmet ovenfor, vil utdataene være:
Inside add (): 2 I hovedsak: 2
I programmet ovenfor definerer vi c som et globalt nøkkelord i add()
funksjonen.
Deretter øke vi variabelen c ved 1
, altså c = c + 2
. Etter det kaller vi add()
funksjonen. Til slutt skriver vi ut den globale variabelen c.
Som vi kan se, skjedde endring også på den globale variabelen utenfor funksjonen c = 2
,.
Globale variabler på tvers av Python-moduler
I Python lager vi en enkelt modul for config.py
å holde globale variabler og dele informasjon på tvers av Python-moduler i samme program.
Slik kan vi dele globale variabler på tvers av python-modulene.
Eksempel 4: Del en global variabel på tvers av Python-moduler
Opprett en config.py
fil for å lagre globale variabler
a = 0 b = "empty"
Opprett en update.py
fil for å endre globale variabler
import config config.a = 10 config.b = "alphabet"
Opprett en main.py
fil for å teste endringer i verdi
import config import update print(config.a) print(config.b)
Når vi kjører main.py
filen, vil utdataene være
10 alfabetet
I ovenfor, har vi opprettet tre filer: config.py
, update.py
og main.py
.
Modulen config.py
lagrer globale variabler av a og b. I update.py
filen importerer vi config.py
modulen og endrer verdiene til a og b. På samme måte main.py
importerer vi både config.py
og update.py
modul i filen . Til slutt skriver vi ut og tester verdiene til globale variabler om de endres eller ikke.
Global i nestede funksjoner
Slik kan du bruke en global variabel i nestet funksjon.
Eksempel 5: Bruke en global variabel i nestet funksjon
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)
Utgangen er:
Før du ringer bar: 20 Ringer nå Etter ringer: 20 x i hovedsaken: 25
I programmet ovenfor erklærte vi en global variabel i den nestede funksjonen bar()
. Innvendig foo()
funksjon har x ingen effekt av det globale søkeordet.
Før og etter ringer bar()
, tar variabelen x verdien av lokal variabel ie x = 20
. Utenfor foo()
funksjonen, vil den variable x ta verdien definert i bar()
funksjon ie x = 25
. Dette er fordi vi har brukt global
nøkkelord i x for å lage global variabel inne i bar()
funksjonen (lokalt omfang).
Hvis vi gjør noen endringer inne i bar()
funksjon, vil endringene vises utenfor det lokale omfang, dvs foo()
.