In dit artikel leert u over het globale trefwoord, de globale variabele en wanneer u globale trefwoorden moet gebruiken.
Voordat u dit artikel leest, moet u ervoor zorgen dat u de basis van Python Global, Local en Nonlocal Variables hebt.
Wat is het globale trefwoord
In Python global
kunt u met trefwoord de variabele buiten het huidige bereik wijzigen. Het wordt gebruikt om een globale variabele te maken en wijzigingen in de variabele aan te brengen in een lokale context.
Regels van globaal trefwoord
De basisregels voor global
trefwoord in Python zijn:
- Wanneer we een variabele binnen een functie maken, is deze standaard lokaal.
- Als we een variabele buiten een functie definiëren, is deze standaard globaal. U hoeft geen
global
trefwoord te gebruiken . - We gebruiken
global
trefwoord om een globale variabele in een functie te lezen en te schrijven. - Gebruik van een
global
trefwoord buiten een functie heeft geen effect.
Gebruik van wereldwijd trefwoord
Laten we een voorbeeld nemen.
Voorbeeld 1: toegang tot globale variabele vanuit een functie
c = 1 # global variable def add(): print(c) add()
Wanneer we het bovenstaande programma uitvoeren, is de uitvoer:
1
We kunnen echter enkele scenario's hebben waarin we de globale variabele vanuit een functie moeten wijzigen.
Voorbeeld 2: Globale variabele wijzigen vanuit de functie
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Wanneer we het bovenstaande programma uitvoeren, toont de uitvoer een fout:
UnboundLocalError: lokale variabele 'c' waarnaar wordt verwezen vóór toewijzing
Dit komt omdat we alleen toegang hebben tot de globale variabele, maar deze niet kunnen wijzigen vanuit de functie.
De oplossing hiervoor is om het global
trefwoord te gebruiken .
Voorbeeld 3: Globale variabele wijzigen vanuit een functie met behulp van global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Wanneer we het bovenstaande programma uitvoeren, is de uitvoer:
Inside add (): 2 In main: 2
In het bovenstaande programma definiëren we c als een globaal trefwoord binnen de add()
functie.
Vervolgens verhogen we de variabele c met 1
, dwz c = c + 2
. Daarna noemen we de add()
functie. Ten slotte printen we de globale variabele c.
Zoals we kunnen zien, vond er ook verandering plaats in de globale variabele buiten de functie c = 2
.
Globale variabelen in Python-modules
In Python maken we een enkele module config.py
om globale variabelen vast te houden en informatie te delen tussen Python-modules binnen hetzelfde programma.
Hier is hoe we globale variabelen kunnen delen over de Python-modules.
Voorbeeld 4: deel een globale variabele over Python-modules
Maak een config.py
bestand om globale variabelen op te slaan
a = 0 b = "empty"
Maak een update.py
bestand om globale variabelen te wijzigen
import config config.a = 10 config.b = "alphabet"
Maak een main.py
bestand om waardeveranderingen te testen
import config import update print(config.a) print(config.b)
Wanneer we het main.py
bestand uitvoeren, is de uitvoer
10 alfabet
In het bovenstaande hebben we drie bestanden gemaakt: config.py
, update.py
, en main.py
.
De module config.py
slaat globale variabelen van a en b op. In het update.py
bestand importeren we de config.py
module en wijzigen de waarden van a en b. Evenzo main.py
importeren we in het bestand zowel config.py
als update.py
module. Ten slotte printen en testen we de waarden van globale variabelen, ongeacht of ze zijn gewijzigd of niet.
Globaal in geneste functies
Hier is hoe u een globale variabele in geneste functie kunt gebruiken.
Voorbeeld 5: een globale variabele gebruiken in geneste functie
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)
De output is:
Voor bellen blokkeren: 20 Oproepen nu blokkeren Na bellen blokkeren: 20 x in hoofd: 25
In het bovenstaande programma hebben we een globale variabele binnen de geneste functie gedeclareerd bar()
. Binnen foo()
functie, x heeft geen effect op het globale trefwoord.
Voor en na het aanroepen bar()
neemt de variabele x de waarde van de lokale variabele, dwz x = 20
. Buiten de foo()
functie zal de variabele x een waarde aannemen die in de bar()
functie is gedefinieerd, dwz x = 25
. Dit komt omdat we global
trefwoord in x hebben gebruikt om een globale variabele te maken binnen de bar()
functie (lokaal bereik).
Als we wijzigingen aanbrengen binnen de bar()
functie, verschijnen de wijzigingen buiten het lokale bereik, dwz foo()
.