Funktion in Funktion in Python
In Python können innerhalb einer Funktion
andere deklariert werden.
Angenommen, wir haben eine äußere Funktion
outer, innerhalb derer sich die
Funktion inner befindet:
def outer():
def inner():
pass
Das oben gezeigte Beispiel sieht einfach genug aus.
Allerdings gibt es oft Situationen, in denen
im Körper der Funktion outer neben
inner noch andere
Operationen ausgeführt werden. Um den Code zu vereinfachen, könnte man
inner in einen äußeren Codeblock auslagern,
allerdings wird diese Funktion
nur einmal und nur innerhalb der Funktion
outer verwendet. Daher macht es keinen Sinn,
sie auszulagern.
Betrachten wir ein Beispiel, bei dem eine Liste
an die Funktion outer übergeben wird.
Und mit Hilfe der Funktion inner wird das numerische Element
der Liste quadriert.
Dazu deklarieren wir nach der Funktion inner
eine leere Liste res, in
welche die im Schleife
quadrierten Elemente gesammelt werden:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Rufen wir die Funktion outer auf,
übergeben ihr eine Liste als Parameter und geben das
Ergebnis in der Konsole aus:
print(outer([2, 3, 5])) # gibt [4, 9, 25] aus
Schreiben Sie eine äußere und eine innere Funktion, deren gemeinsame Arbeit jedes Zeichenketten-Element der Liste mit einem Großbuchstaben beginnend ausgibt.
Gegeben sind die Funktionen:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Schreiben Sie den Code so um, dass func1
eine innere Funktion von func2 wird.