Nonlocal-instruktionen i Python
Der tilfælde, hvor der i den ydre funktion
er en variabel, som der skal have
adgang til i den indre funktion. Lad os deklarere
variablen i i funktionen outer.
I forhold til den indre funktion vil denne
variabel være en ekstern (globale
variabler er de variabler, der kun er deklareret
i den eksterne kode). Og i funktionen inner
vil vi tilføje én til i:
def outer():
i = 0
def inner():
i += 1 # vil vise [4, 9, 25]
inner()
return i
Men for inner er variablen i
en lokal variabel, Python betragter den som
udeklareret og viser en passende
fejl. Tidligere blev en sådan fejl rettet
ved hjælp af instruktionen global. Men
her er i en ekstern variabel,
så der skal bruges instruktionen
nonlocal. Den tager de listede
variabelnavne i den nærmeste omfang,
eksklusive den globale, dvs. i
inde i inner vil blive taget fra variablen,
deklareret over denne funktion:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # vil vise 1
I følgende kode har en programmør lavet en fejl:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Hvad er der galt med denne kode? Find og ret fejlen i forfatterens kode.
I følgende kode har en programmør lavet en fejl:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Hvad er der galt med denne kode? Find og ret fejlen i forfatterens kode.