Python Global, Local en Nonlocal Variabelen begrijpen
Python Global, Local en Nonlocal Variabelen begrijpen
Beheers het gebruik van globale, locale en non-lokale variabelen in Python, en weet wanneer je elk toepast voor schone, onderhoudbare code.
Video: Python Lokale en Globale Variabelen
Globale Variabelen
In Python is een variabele gedeclareerd buiten elke functie – op module-niveau – een globale variabele. Het kan overal in de module gelezen worden, maar moet gedeclareerd worden met het global keyword als je het binnen een functie wilt wijzigen.
Voorbeeld: een globale variabele aanmaken en lezen
x = "global"
def foo():
print("x binnen:", x)
foo()
print("x buiten:", x)
Output
x binnen: global x buiten: global
Het proberen x te hertoewijzen zonder het globaal te declareren resulteert in een UnboundLocalError:
x = "global"
def foo():
x = x * 2
print(x)
foo()
Output
UnboundLocalError: local variable 'x' referenced before assignment
Om een globale variabele binnen een functie te wijzigen, gebruik het global keyword:
x = "global"
def foo():
global x
x = x * 2
print(x)
foo()
Output
globalglobal
Lokale Variabelen
Een lokale variabele is gedefinieerd binnen een functie-body en bestaat alleen tijdens die functie-uitvoering. Het kan niet buiten de functie benaderd worden.
Voorbeeld: een lokale variabele buiten zijn scope benaderen
def foo():
y = "lokaal"
foo()
print(y)
Output
NameError: name 'y' is not defined
Een lokale variabele correct definiëren en gebruiken:
def foo():
y = "lokaal"
print(y)
foo()
Output
lokaal
Globale en Lokale Variabelen Combineren
Het is gebruikelijk om beide scopes in dezelfde module te gebruiken. Het global keyword zorgt ervoor dat een variabele naar de module-level instantie refereert.
x = "global "
def foo():
global x
y = "lokaal"
x = x * 2
print(x)
print(y)
foo()
Output
global global lokaal
Wanneer een lokale variabele een naam deelt met een globale, zijn ze onafhankelijk:
x = 5
def foo():
x = 10
print("lokaal x:", x)
foo()
print("globaal x:", x)
Output
lokaal x: 10 globaal x: 5
Non-lokale Variabelen
Geneste functies kunnen variabelen uit hun omsluitende (maar niet globale) scope benaderen en wijzigen met het nonlocal keyword.
def outer():
x = "lokaal"
def inner():
nonlocal x
x = "nonlokaal"
print("inner:", x)
inner()
print("outer:", x)
outer()
Output
inner: nonlokaal outer: nonlokaal
Let op: Het updaten van een non-lokale variabele binnen de inner-functie update de variabele in de outer-functie's scope.
Python
- C Variabelen, Constanten en Literals: Een Complete Gids
- Python Keywords en Identifiers: Gereserveerde woorden en naamconventies onder de knie krijgen
- Python Statements, Indentatie en Comments: Een duidelijke gids
- Python Variabelen, Constanten en Literals – Een uitgebreide gids
- Python Type Conversie & Casting onder de knie krijgen: Een uitgebreide gids
- Python I/O en Module Imports onder de knie krijgen: Een praktische gids
- Python's Global Keyword onder de knie krijgen: Hoe en wanneer te gebruiken
- Python getallen, typeconversie en wiskunde beheersen
- Python-directory en bestandsbewerkingen beheersen
- Python-fouten & ingebouwde exceptions beheersen
- type() en isinstance() in Python begrijpen: praktische voorbeelden