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:
def outer():
def inner():
return '+++'
return inner
Laten we de aanroep van outer in
variabele res opslaan:
res = outer()
print(res)
Na het uitvoeren van de code wordt een object met de functie weergegeven:
<function outer.<locals>.inner at 0x000001564A212B90>
Als we variabele res aanroepen met
ronde haakjes, dan wordt het bericht
'+++' geretourneerd:
print(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:
res = outer()()
print(res) # geeft '+++' weer
De volgende code is gegeven:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Zeg wat er in de console wordt weergegeven.
De volgende code is gegeven:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Zeg wat er in de console wordt weergegeven.