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:
def outer():
def inner():
return '+++'
return inner
Lad os gemme kaldet af outer i
variablen res:
res = outer()
print(res)
Efter udførelse af koden vil et objekt med funktionen blive vist:
<function outer.<locals>.inner at 0x000001564A212B90>
Hvis man derimod kalder variablen res med
parenteser, vil beskeden
'+++' blive returneret:
print(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:
res = outer()()
print(res) # vil vise '+++'
Følgende kode er givet:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Sig, hvad der vil blive vist i konsollen.
Følgende kode er givet:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Sig, hvad der vil blive vist i konsollen.