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:

pythondef 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:

pythondef 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:

pythonprint(outer([2, 3, 5])) # vypíše [4, 9, 25]
Задание 1

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.

Задание 2

Jsou dány funkce:

pythondef 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.