Funkce uvnitř funkce v Pythonu
V Pythonu je možné uvnitř jedněch funkcí deklarovat
jiné. Předpokládejme, že máme vnější funkci
outer, uvnitř které se nachází
funkce inner:
def outer():
def inner():
pass
Výše uvedený příklad vypadá dostatečně
jednoduše. Často však nastávají situace, kdy
v těle funkce outer se kromě
inner provádějí i další
operace. Pro zjednodušení kódu by bylo
možné vyjmout inner do vnějšího bloku
kódu, ale tato funkce bude použita
pouze jednou a pouze uvnitř funkce
outer. Proto nemá smysl ji vyjímat
ven.
Podívejme se na příklad, kdy se do funkce
outer předá seznam. A pomocí
funkce inner bude číselný prvek
seznamu umocněn na druhou.
K tomu po funkci inner
deklarujeme prázdný seznam res, do
kterého budou v cyklu ukládány prvky
umocněné na druhou:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Zavolejme funkci outer,
předáme jí parametr seznam a vypišme
výsledek do konzole:
print(outer([2, 3, 5])) # vypíše [4, 9, 25]
Napište vnější a vnitřní funkci, jejichž společná práce bude vypisovat každý řetězcový prvek seznamu s velkým počátečním písmenem.
Jsou dány funkce:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Přepište kód tak, aby func1
byla vnitřní funkcí pro func2.