Nyanser ved arbeid med indre funksjoner i Python

I Python kan det ikke bare være nestede funksjoner, men en funksjon kan også returnere en annen. For eksempel, la funksjonen outer returnere som resultat kildekoden til funksjonen inner:

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

  return inner

La oss skrive kallet outer i variabelen res:

pythonres = outer()
print(res)

Etter kjøring av koden vil et objekt med funksjonen bli vist:

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

Hvis vi kaller variabelen res med parenteser, vil meldingen '+++' returneres:

pythonprint(res()) # vil vise '+++'

Koden kan skrives om slik at res blir satt til outer med to parenteser - for å kalle seg selv og funksjonen inner. Det følger at man kan skrive ytterligere parenteser til høyre for den ytre funksjonen, i antall tilsvarende de nestede funksjonene i den:

pythonres = outer()()
print(res) # vil vise '+++'
Задание 1

Følgende kode er gitt:

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

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

Si hva som vil vises i konsollen.

Задание 2

Følgende kode er gitt:

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

  return inner
  
res = outer()
print(res)

Si hva som vil vises i konsollen.