Die nonlocal-instruksie in Python
Daar is gevalle waar 'n veranderlike in die eksterne funksie
is waartoe toegang nodig is
in die interne funksie. Kom ons verklaar in
funksie outer die veranderlike i.
Ten opsigte van die interne funksie sal hierdie
veranderlike eksterne wees (globaal
is slegs veranderlikes wat verklaar is
in die eksterne kode). En aan funksie inner
gee ons die opdrag om een by i te tel:
def outer():
i = 0
def inner():
i += 1 # sal [4, 9, 25] uitvoer
inner()
return i
Maar vir inner is veranderlike i
lokaal, Python beskou dit as
onverklaard en gee die ooreenstemmende
fout. Vroeër is so 'n fout reggestel
met behulp van die global instruksie. Maar
hier is i 'n eksterne veranderlike,
dus moet ons die instruksie
nonlocal gebruik. Dit neem die genoemde
veranderlike name in die naaste omvang
van sigbaarheid, die globale uitsluitend, d.w.s. i
binne inner sal van die veranderlike geneem word
wat bo hierdie funksie verklaar is:
def outer():
i = 0
def inner():
nonlocal i
i += 1
inner()
return i
print(outer()) # sal 1 uitvoer
In die volgende kode het 'n sekere programmeerder 'n fout gemaak:
num = 10
def outer():
num = 5
def inner():
num -= 2
inner()
return num
print(outer())
Wat is verkeerd met hierdie kode? Vind en regstel die outeur se fout.
In die volgende kode het 'n sekere programmeerder 'n fout gemaak:
num = 3
def outer():
num += 1
tst = num
def inner():
tst = tst ** 3
inner()
return tst
print(outer())
Wat is verkeerd met hierdie kode? Vind en regstel die outeur se fout.