Funktsioon funktsioonis Pythonis
Pythonis saab ühe funktsiooni sees deklareerida
teisi. Olgu meil väline funktsioon
outer, mille sees asub
funktsioon inner:
def outer():
def inner():
pass
Ülaltoodud näide näeb välja piisavalt
lihtne. Siiski esineb sageli olukordi, kus
funktsiooni outer kehas lisaks
funktsioonile inner tehakse ka muid
operatsioone. Koodi lihtsustamiseks võiks
funktsiooni inner viia välimisse koodiplokki,
kuid seda funktsiooni kasutatakse
ainult üks kord ja ainult funktsiooni
outer sees. Seega pole mõtet seda
välja viia.
Vaatleme näidet, kui funktsioonile
outer antakse ette loend. Ja funktsiooni
inner abil tõstetakse
loendi numbriline element ruutu.
Selleks deklareerime funktsiooni inner järel
tühja loendi res, kuhu
hakkatakse koguma tsüklis ruutu tõstetud
elemente:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Kutsume funktsioon outer,
edastame sellele parameetrina loendi ja väljastame
tulemi konsooli:
print(outer([2, 3, 5])) # väljastab [4, 9, 25]
Kirjutage väline ja sisemine funktsioon, mille ühine töö väljastab iga loendis oleva sõnelise elemendi suure algustähega.
Antud funktsioonid:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Kirjutage kood ümber nii, et func1
oleks func2 sisemine funktsioon.