Нијансе при раду са унутрашњом функцијом у Пајтону

У Пајтону могу постојати не само уграђене функције, већ једна функција може да враћа другу. На пример, нека функција 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)

Реците шта ће бити исписано у конзолу.