Funktion i funktion i Python
I Python kan man deklarera andra funktioner
inuti en funktion. Låt oss säga att vi har en yttre funktion
outer, inuti vilken det finns en
funktion inner:
def outer():
def inner():
pass
Exemplet ovan ser ganska enkelt ut.
Men det finns ofta situationer när
det i funktionskroppen outer förutom
inner också utförs andra
operationer. För att förenkla koden kunde
man ha flyttat ut inner till ett yttre kodblock,
men denna funktion kommer bara att användas
en gång och bara inuti funktionen
outer. Därför finns det ingen mening med att
flytta ut den.
Låt oss titta på ett exempel där en lista
skickas till funktionen outer.
Och med hjälp av funktionen inner
kommer det numeriska elementet i
listan att höjas till kvadrat.
För att göra detta deklarerar vi en tom lista res
efter funktionen inner,
i vilken element som har höjts till kvadrat kommer ackumuleras i en loop:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Låt oss anropa funktionen outer,
skicka en listparameter till den och skriva ut
resultatet till konsolen:
print(outer([2, 3, 5])) # skriver ut [4, 9, 25]
Skriv en yttre och en inre funktion som tillsammans skriver ut varje strängelement i listan med stor begynnelsebokstav.
Givna funktioner:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Skriv om koden så att func1
blir en inre funktion till func2.