Nianse pri delu z notranjo funkcijo v Python

V Pythonu lahko niso le ugnezdeni funkciji, ampak lahko ena funkcija vrne drugo. Na primer, naj funkcija outer vrne kot rezultat izvorno kodo funkcije inner:

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

  return inner

Zapišimo klic outer v spremenljivko res:

pythonres = outer()
print(res)

Po izvedbi kode se bo izpisal objekt s funkcijo:

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

Če pa pokličemo spremenljivko res z okroglimi oklepaji, se vrne sporočilo '+++':

pythonprint(res()) # izpiše '+++'

Kodo lahko prepišemo tako, da se v res zapiše outer z dvema okroglima oklepajema - za klic same sebe in funkcije inner. Iz tega sledi, da lahko zapišemo dodatne okrogle oklepaje desno od zunanje funkcije glede na število vanjo ugnezdenih funkcij:

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

Podana je naslednja koda:

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

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

Povejte, kaj se izpiše v konzolo.

Задание 2

Podana je naslednja koda:

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

  return inner
  
res = outer()
print(res)

Povejte, kaj se izpiše v konzolo.