Funksjon i funksjon i Python
I Python kan man deklarere andre funksjoner
innenfor en funksjon. La oss si at vi har en ytre funksjon
outer, og inni den finnes en
funksjon inner:
def outer():
def inner():
pass
Eksempelet over ser enkelt nok ut.
Likevel oppstår det ofte situasjoner hvor
det i kroppen til funksjonen outer, i tillegg til
inner, utføres andre
operasjoner. For å forenkle koden kunne man
ha flyttet inner ut til et ytre blokk
av koden, men denne funksjonen vil bare bli brukt
én gang og bare inni funksjonen
outer. Derfor er det ikke noe poeng i
å flytte den ut.
La oss se på et eksempel hvor en liste
overføres til funksjonen
outer. Og ved hjelp av
funksjonen inner vil det numeriske elementet
i listen bli opphøyd i andre potens.
For å gjøre dette, etter funksjonen inner,
deklarerer vi en tom liste res, der
elementer som er opphøyd i andre potens, vil akkumuleres i en løkke:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
La oss kalle funksjonen outer,
sende den en parameter liste og skrive ut
resultatet til konsollen:
print(outer([2, 3, 5])) # vil skrive ut [4, 9, 25]
Skriv en ytre og en indre funksjon som sammen skal skrive ut hvert streng-element i listen med stor forbokstav.
Gitte funksjoner:
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 slik at func1
blir en indre funksjon for func2.