Geneste functies II
Goed gedaan, je hebt zojuist een functie binnen een andere functie genest. Een andere gave reden om functies te nesten is het idee van een closure. Dit betekent dat de geneste of innerlijke functie de staat van de omhullende scope onthoudt wanneer ze wordt aangeroepen. Alles wat lokaal is gedefinieerd in die omhullende scope is dus beschikbaar voor de innerlijke functie, zelfs wanneer de buitenste functie klaar is met uitvoeren.
Laten we doorgaan! In deze oefening maak je de definitie af van de innerlijke functie inner_echo() en roep je echo() een paar keer aan, telkens met een ander argument. Maak de oefening af en kijk wat de output wordt!
Deze oefening maakt deel uit van de cursus
Introductie tot functies in Python
Oefeninstructies
- Maak de functieheader van de innerlijke functie af met de functienaam
inner_echo()en één parameterword1. - Maak de functie
echo()af zodat dezeinner_echoretourneert. - We hebben
echo()al aangeroepen met 2 als argument en de resulterende functie toegewezen aantwice. Jij roeptecho()nu aan met 3 als argument. Wijs de resulterende functie toe aanthrice. - Klik op Antwoord verzenden om
twice()enthrice()aan te roepen en de resultaten te printen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Define echo
def echo(n):
"""Return the inner_echo function."""
# Define inner_echo
def ____(____):
"""Concatenate n copies of word1."""
echo_word = word1 * n
return echo_word
# Return inner_echo
# Call echo: twice
twice = echo(2)
# Call echo: thrice
# Call twice() and thrice() then print
print(twice('hello'), thrice('hello'))