Nijanse pri radu sa unutrašnjom funkcijom u Python-u

U Python-u mogu postojati ne samo ugniježđene funkcije, već jedna funkcija može vraćati drugu. Na primer, neka funkcija outer vraća kao rezultat izvorni kod funkcije inner:

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

  return inner

Hajde da zapišemo poziv outer u promenljivu res:

pythonres = outer()
print(res)

Nakon izvršavanja koda ispisaće se objekat sa funkcijom:

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

Ako pozovemo promenljivu res sa zagradama, vratiće se poruka '+++':

pythonprint(res()) # ispisaće '+++'

Možemo prepisati kod tako da se u res upisuje outer sa dve zagrade - za poziv same sebe i funkcije inner. Iz čega sledi da možemo upisivati dodatne zagrade desno od spoljne funkcije po broju, ugniježdenih u nju funkcija:

pythonres = outer()()
print(res) # ispisaće '+++'
Задание 1

Dat je sledeći kod:

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

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

Recite šta će se ispisati u konzolu.

Задание 2

Dat je sledeći kod:

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

  return inner
  
res = outer()
print(res)

Recite šta će se ispisati u konzolu.