Python's Global Keyword onder de knie krijgen: Hoe en wanneer te gebruiken
Python's Global Keyword onder de knie krijgen: Hoe en wanneer te gebruiken
Deze gids legt uit wat het Python global keyword is, de regels, praktische use cases en best practices voor het beheren van globale variabelen over modules heen.
Wat is het Global Keyword?
In Python laat het global keyword je declareren dat een variabele binnen een functie verwijst naar een module-level variabele in plaats van een nieuwe lokale. Dit is essentieel wanneer een functie een variabele moet lezen of wijzigen die buiten zijn eigen scope bestaat.
Regels voor het gebruiken van global
- Variabelen aangemaakt binnen een functie zijn standaard lokaal.
- Variabelen gedefinieerd op module-niveau zijn automatisch globaal;
globalis onnodig wanneer je ze alleen leest. - Gebruik
globalbinnen een functie wanneer je wilt toewijzen aan een module-level variabele. - Het plaatsen van
globalbuiten een functie heeft geen effect.
Praktisch gebruik van global
Hieronder zijn illustratieve voorbeelden die zowel de vallen als de correcte aanpak demonstreren.
Voorbeeld 1: Een globale variabele benaderen vanuit binnen een functie
c = 1 # globale variabele
def add():
print(c)
add()
Output:
1
Hier wordt c met succes gelezen omdat geen toewijzing plaatsvindt binnen add().
Voorbeeld 2: Poging een globale variabele te wijzigen zonder global
c = 1 # globale variabele
def add():
c = c + 2 # probeert c te wijzigen
print(c)
add()
Output:
UnboundLocalError: local variable 'c' referenced before assignment
Voorbeeld 3: Een globale variabele wijzigen met global
c = 0 # globale variabele
def add():
global c
c = c + 2
print("Binnen add():", c)
add()
print("In main:", c)
Output:
Binnen add(): 2 In main: 2
Door global c te declareren, updated de functie de module-level c, en is de wijziging zichtbaar buiten de functie.
Globale variabelen delen over Python Modules
Voor grotere applicaties is het gebruikelijk om configuratie te centraliseren in een toegewijde module, zoals config.py. Andere modules kunnen deze waarden importeren en wijzigen, wat consistente state over het programma mogelijk maakt.
Voorbeeld 4: Cross-Module Globale Variabelen
Maak config.py:
a = 0
b = "leeg"
Maak update.py om de globals te wijzigen:
import config
config.a = 10
config.b = "alfabet"
Maak main.py om de wijzigingen te verifiëren:
import config
import update
print(config.a)
print(config.b)
Output:
10 alfabet
Dit patroon houdt gedeelde state op één plek terwijl gecontroleerde updates vanuit andere modules mogelijk zijn.
global gebruiken in Geneste Functies
Wanneer een geneste functie een variabele moet wijzigen die lokaal is voor een outer-functie, kan het global keyword nog steeds toegepast worden om een werkelijk globale variabele aan te maken.
Voorbeeld 5: Globale Variabele in een Geneste Functie
def foo():
x = 20
def bar():
global x
x = 25
print("Voor aanroep bar:", x)
print("Aanroep bar nu")
bar()
print("Na aanroep bar:", x)
foo()
print("x in main:", x)
Output:
Voor aanroep bar: 20 Aanroep bar nu Na aanroep bar: 20 x in main: 25
Binnen foo() blijft x een lokale variabele. De geneste bar() declareert x als globaal, dus de toewijzing beïnvloedt de module-level x en is zichtbaar na afloop van foo().
Hoewel global handig kan zijn, is het over het algemeen het beste om functies te ontwerpen die nieuwe waarden retourneren in plaats van globale state te muteren. Dit bevordert duidelijkere code en eenvoudigere testing. Voor gedetailleerde taalregels, zie de officiële Python-documentatie over de global statement.
Python
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Pass Statement onder de knie krijgen: Een praktische gids
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python Global, Local en Nonlocal Variabelen begrijpen
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-iterators: hoe ze werken en hoe je je eigen maakt
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
- Python Overzicht: Hoog-Niveau, Leesbaar, Interactief & Object-Georiënteerd
- Python Variabele Typen: Datatypes Begrijpen en Gebruiken