Sisäisen funktion käytön vivahteet Pythonissa
Pythonissa voi olla paitsi sisäkkäisiä
funktioita, myös yksi funktio voi palauttaa
toisen. Esimerkiksi, olkoon funktio outer
palauttaa tuloksena inner-funktion
lähdekoodin:
def outer():
def inner():
return '+++'
return inner
Tallennetaan outer-funktion kutsu
muuttujaan res:
res = outer()
print(res)
Koodin suorituksen jälkeen tulostuu funktio-objekti:
<function outer.<locals>.inner at 0x000001564A212B90>
Jos muuttuja res kutsutaan
pyöreillä sulkeilla, palautuu viesti
'+++':
print(res()) # tulostaa '+++'
Koodi voidaan kirjoittaa uudelleen siten, että res
muuttujaan tallennetaan outer
kahdella pyöreällä sulkeella - itse funktion kutsua ja funktion
inner kutsu varten. Tästä seuraa, että
ulomman funktion oikealle puolelle voidaan kirjoittaa
lisäpyöreitä sulkeita sen mukaisesti, kuinka monta
funktiota siihen on sisäkkäin:
res = outer()()
print(res) # tulostaa '+++'
Annettu seuraava koodi:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Mitä konsoliin tulostuu?
Annettu seuraava koodi:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Mitä konsoliin tulostuu?