Nuancer ved arbejde med interne funktioner i Python

I Python kan der ikke kun være nestede funktioner, men en funktion kan også returnere en anden. For eksempel, lad funktionen outer returnere kildekoden for funktionen inner som resultat:

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

  return inner

Lad os gemme kaldet af outer i variablen res:

pythonres = outer()
print(res)

Efter udførelse af koden vil et objekt med funktionen blive vist:

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

Hvis man derimod kalder variablen res med parenteser, vil beskeden '+++' blive returneret:

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

Man kan omskrive koden, så res gemmer outer med to parenteser - for at kalde sig selv og funktionen inner. Heraf følger, at man kan skrive yderligere parenteser til højre for den ydre funktion efter antallet af funktioner nestede i den:

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

Følgende kode er givet:

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

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

Sig, hvad der vil blive vist i konsollen.

Задание 2

Følgende kode er givet:

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

  return inner
  
res = outer()
print(res)

Sig, hvad der vil blive vist i konsollen.