Funktion i funktion i Python
I Python kan man erklære andre funktioner
inden i en funktion. Lad os sige, at vi har en ydre funktion
outer, inde i hvilken der findes
funktionen inner:
def outer():
def inner():
pass
Eksemplet ovenfor ser simpelt nok ud.
Men ofte opstår der situationer, hvor
der i funktionskroppen outer udover
inner også udføres andre
operationer. For at forenkle koden kunne
man have flyttet inner ud til en ydre blok,
men denne funktion vil kun blive brugt
én gang og kun inde i funktionen
outer. Derfor giver det ikke mening
at flytte den ud.
Lad os se på et eksempel, hvor en liste overføres
til funktionen outer. Og ved hjælp af
funktionen inner vil det numeriske element
i listen blive opløftet til anden potens.
Til dette erklærer vi en tom liste res efter funktionen inner,
i hvilken elementer vil blive akkumuleret,
opløftet til anden potens i en løkke:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Lad os kalde funktionen outer,
overføre en liste som parameter og udskrive
resultatet i konsollen:
print(outer([2, 3, 5])) # vil udskrive [4, 9, 25]
Skriv en ydre og en indre funktion, hvis fælles arbejde vil udskrive hvert streng-element i listen med stort begyndelsesbogstav.
Givne 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
Omskriv koden, så func1
bliver en indre funktion for func2.