Nyanser ved arbeid med indre funksjoner i Python
I Python kan det ikke bare være nestede
funksjoner, men en funksjon kan også returnere
en annen. For eksempel, la funksjonen outer
returnere som resultat kildekoden til
funksjonen inner:
def outer():
def inner():
return '+++'
return inner
La oss skrive kallet outer i
variabelen res:
res = outer()
print(res)
Etter kjøring av koden vil et objekt med funksjonen bli vist:
<function outer.<locals>.inner at 0x000001564A212B90>
Hvis vi kaller variabelen res med
parenteser, vil meldingen
'+++' returneres:
print(res()) # vil vise '+++'
Koden kan skrives om slik at res
blir satt til outer med to parenteser
- for å kalle seg selv og funksjonen
inner. Det følger at man kan
skrive ytterligere parenteser
til høyre for den ytre funksjonen, i antall
tilsvarende de nestede funksjonene i den:
res = outer()()
print(res) # vil vise '+++'
Følgende kode er gitt:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Si hva som vil vises i konsollen.
Følgende kode er gitt:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Si hva som vil vises i konsollen.