A belső függvények használatának finomságai Pythonban

A Pythonban nem csak beágyazott függvények létezhetnek, de egy függvény vissza is adhat egy másikat. Például legyen a outer függvény, amely visszaadja eredményként a inner függvény forráskódját:

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

  return inner

Írjuk fel a outer hívását a res változóba:

pythonres = outer()
print(res)

A kód végrehajtása után egy függvényobjektum jelenik meg:

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

Ha viszont a res változót zárójelekkel hívjuk meg, akkor a '+++' üzenet adódik vissza:

pythonprint(res()) # kiírja '+++'

Át lehet írni a kódot úgy, hogy a res változóba a outer kerüljön két zárójellel - magának a függvénynek és a inner függvénynek a meghívására. Ebből következik, hogy további zárójeleket lehet írni a külső függvénytől jobbra, az abba ágyazott függvények számának megfelelően:

pythonres = outer()()
print(res) # kiírja '+++'
Задание 1

A következő kód adott:

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

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

Mondd meg, mi jelenik meg a konzolon.

Задание 2

A következő kód adott:

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

  return inner
  
res = outer()
print(res)

Mondd meg, mi jelenik meg a konzolon.