Nuances bij het werken met interne functies in Python

In Python kunnen er niet alleen geneste functies zijn, maar één functie kan ook een andere retourneren. Stel, functie outer retourneert als resultaat de broncode van functie inner:

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

  return inner

Laten we de aanroep van outer in variabele res opslaan:

pythonres = outer()
print(res)

Na het uitvoeren van de code wordt een object met de functie weergegeven:

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

Als we variabele res aanroepen met ronde haakjes, dan wordt het bericht '+++' geretourneerd:

pythonprint(res()) # geeft '+++' weer

We kunnen de code zo herschrijven dat in res outer wordt opgeslagen met twee paar ronde haakjes - voor de aanroep van zichzelf en de functie inner. Hieruit volgt dat we extra ronde haakjes kunnen plaatsen rechts van de buitenste functie, volgens het aantal erin geneste functies:

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

De volgende code is gegeven:

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

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

Zeg wat er in de console wordt weergegeven.

Задание 2

De volgende code is gegeven:

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

  return inner
  
res = outer()
print(res)

Zeg wat er in de console wordt weergegeven.