Nonlocal instrukcija u Pythonu
Ponekad postoji situacija kada u spoljašnjoj funkciji
postoji promenljiva kojoj je potreban pristup
iz unutrašnje funkcije. Deklarišimo u
funkciji outer promenljivu i.
U odnosu na unutrašnju funkciju ova
promenljiva će biti spoljašnja (globalne
su promenljive deklarisane SAMO
u spoljašnjem kodu). Funkciji inner
dodelimo dodavanje jedinice na i:
def outer():
i = 0
def inner():
i += 1 # ispisati će [4, 9, 25]
inner()
return i
Međutim, za inner promenljiva i
je lokalna, Python je smatra
nedeklarisanom i prikazuje odgovarajuću
grešku. Ranije se ovakva greška ispravljala
pomoću instrukcije global. Međutim
ovde i je spoljašnja promenljiva,
pa treba koristiti instrukciju
nonlocal. Ona uzima imenovane
promenljive iz najbližeg opsega vidljivosti,
isključujući globalni, tj. i
unutar inner će biti uzeta iz promenljive,
deklarisane iznad ove funkcije:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # ispisati će 1
U sledećem kodu jedan programer je napravio grešku:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Šta nije u redu sa ovim kodom? Pronađite i ispravite grešku autora koda.
U sledećem kodu jedan programer je napravio grešku:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Šta nije u redu sa ovim kodom? Pronađite i ispravite grešku autora koda.