A nonlocal utasítás Pythonban
Előfordul, hogy a külső függvényben
van egy változó, amelyhez hozzá kell
férni a belső függvényben. Deklaráljunk a
outer függvényben egy i változót.
A belső függvény szempontjából ez a változó
külsőnek számít (globálisaknak csak
a külső kódban deklarált változók számítanak).
A inner függvénynek pedig adjunk meg
egy hozzáadást i változóhoz:
def outer():
i = 0
def inner():
i += 1 # Kiírja [4, 9, 25]
inner()
return i
Azonban a inner számára a i változó
lokális, a Python nem deklaráltnak tekinti,
és ennek megfelelő hibát jelez. Korábban
egy ilyen hiba a global utasítással
javítható volt. Azonban
itt i külső változó,
ezért a nonlocal utasítást kell használni.
Ez a felsorolt változóneveket a legközelebbi
névtereből veszi, kizárva a globálist, azaz a i
a inner függvényben a függvény felett
deklarált változóból lesz véve:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # Kiírja: 1
A következő kódban egy programozó hibát követett el:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Mi a baj ezzel a kóddal? Keresse meg és javítsa ki a kód szerzőjének hibáját.
A következő kódban egy programozó hibát követett el:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Mi a baj ezzel a kóddal? Keresse meg és javítsa ki a kód szerzőjének hibáját.