Нијанси при работа со внатрешна функција во Python

Во Python можат да постојат не само вгнездени функции, туку една функција може да враќа друга. На пример, нека функцијата outer враќа како резултат изворниот код на функцијата inner:

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

  return inner

Да ја запишеме повикот outer во променливата res:

pythonres = outer()
print(res)

По извршувањето на кодот ќе се испечати објект со функцијата:

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

Ако пак ја повикаме променливата res со заградни загради, ќе се врати пораката '+++':

pythonprint(res()) # ќе испечати '+++'

Може да се препише кодот така што во res да се запише outer со две заградни загради - за повикување на самата себе и функцијата inner. Од што следува дека може да се запишат дополнителни заградни загради десно од надворешната функција по бројот, вгнездени во неа функции:

pythonres = outer()()
print(res) # ќе испечати '+++'
Задание 1

Даден е следниот код:

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

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

Кажете што ќе се испечати во конзола.

Задание 2

Даден е следниот код:

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

  return inner
  
res = outer()
print(res)

Кажете што ќе се испечати во конзола.