Nuansy pri práci s vnútornou funkciou v Pythone

V Pythone môžu byť nielen vnorené funkcie, ale aj jedna funkcia môže vrátiť inú. Napríklad, nech funkcia outer vráti ako výsledok zdrojový kód funkcie inner:

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

  return inner

Zapíšme volanie outer do premennej res:

pythonres = outer()
print(res)

Po vykonaní kódu sa vypíše objekt s funkciou:

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

Ak zavoláme premennú res s okrúhlymi zátvorkami, vráti sa správa '+++':

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

Kód je možné prepísať tak, aby do res sa zapísala outer s dvomi okrúhlymi zátvorkami - pre volanie seba samej a funkcie inner. Z čoho vyplýva, že je možné zapisovať dodatočné okrúhle zátvorky napravo od vonkajšej funkcie podľa počtu, vnorených do nej funkcií:

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

Daný je nasledujúci kód:

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

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

Povedzte, čo sa vypíše do konzoly.

Задание 2

Daný je nasledujúci kód:

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

  return inner
  
res = outer()
print(res)

Povedzte, čo sa vypíše do konzoly.