Nuance při práci s vnitřní funkcí v Pythonu

V Pythonu mohou být nejen vnořené funkce, ale jedna funkce může vracet druhou. Například, nechť funkce outer vrací jako výsledek zdrojový kód funkce inner:

pythondef outer():
  def inner():
    return '+++'

  return inner

Zapišme volání outer do proměnné res:

pythonres = outer()
print(res)

Po provedení kódu se vypíše objekt s funkcí:

python<function outer.<locals>.inner at 0x000001564A212B90>

Pokud zavoláme proměnnou res s kulatými závorkami, vrátí se zpráva '+++':

pythonprint(res()) # vypíše '+++'

Lze přepsat kód tak, aby se do res zapsala outer s dvěma kulatými závorkami - pro volání sebe samé a funkce inner. Z čehož vyplývá, že lze zapsat další kulaté závorky vpravo od vnější funkce podle počtu funkcí vnořených do ní:

pythonres = outer()()
print(res) # vypíše '+++'
Задание 1

Je dán následující kód:

pythondef outer():
  def inner(num):
    return num + 2

  return inner
  
res = outer()(3)
print(res)

Řekněte, co se vypíše do konzole.

Задание 2

Je dán následující kód:

pythondef outer():
  def inner(txt):
    return 'hello, ' + txt

  return inner
  
res = outer()
print(res)

Řekněte, co se vypíše do konzole.