Functie in functie in Python
In Python kun je binnen de ene functie
andere functies declareren.
Stel we hebben een buitenste functie
outer, waarin zich een
functie inner bevindt:
def outer():
def inner():
pass
Het bovenstaande voorbeeld ziet er vrij
eenvoudig uit. Er zijn echter vaak situaties waarin
in het lichaam van de functie outer, naast
inner, ook andere
operaties worden uitgevoerd. Om de code te vereenvoudigen
zou men inner naar het buitenste codeblok
kunnen verplaatsen, maar deze functie zal slechts
één keer worden gebruikt en alleen binnen de functie
outer. Daarom heeft het geen zin
om hem naar buiten te verplaatsen.
Laten we een voorbeeld bekijken waarbij aan de functie
outer een lijst wordt doorgegeven.
En met behulp van de functie inner
wordt een numeriek element
van de lijst kwadraat.
Hiervoor declareren we na de functie inner
een lege lijst res, waarin
elementen die zijn gekwadrateerd in een lus worden opgehoopt:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Laten we de functie outer aanroepen,
er een lijst als parameter aan doorgeven en het
resultaat naar de console uitvoeren:
print(outer([2, 3, 5])) # geeft [4, 9, 25] weer
Schrijf een buitenste en binnenste functie waarvan de gezamenlijke werking elk tekenreekselement van de lijst met een hoofdletter zal uitvoeren.
Gegeven functies:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Herschrijf de code zodat func1
een binnenste functie van func2 wordt.