Pythoni sisemiste funktsioonidega töötamise nüansid
Pythonis ei saa olla mitte ainult pesastatud
funktsioone, vaid üks funktsioon võib ka tagastada
teise. Näiteks olgu funktsioon outer
tagastab tulemusena funktsiooni inner
lähtekoodi:
def outer():
def inner():
return '+++'
return inner
Kirjutame väljakutse outer
muutujasse res:
res = outer()
print(res)
Pärast koodi täitmist kuvatakse funktsiooni objekt:
<function outer.<locals>.inner at 0x000001564A212B90>
Kui kutsuda muutuja res välja
ümarsulgudega, tagastatakse sõnum
'+++':
print(res()) # kuvab '+++'
Koodi saab ümber kirjutada nii, et res
kirjutatakse outer kahe ümarsulguga
- ennast ja funktsiooni väljakutsumiseks
inner. Sellest järeldub, et saab
kirjutada täiendavaid ümarsulge
paremale välimisest funktsioonist vastavalt arvule,
sinna pesastatud funktsioone:
res = outer()()
print(res) # kuvab '+++'
Antud on järgmine kood:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Öelge, mis konsooli kuvatakse.
Antud on järgmine kood:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Öelge, mis konsooli kuvatakse.