Subtilités lors de l'utilisation des fonctions internes en Python
En Python, il peut non seulement y avoir des fonctions
imbriquées, mais une fonction peut également en retourner
une autre. Par exemple, supposons que la fonction outer
retourne comme résultat le code source
de la fonction inner :
def outer():
def inner():
return '+++'
return inner
Enregistrons l'appel de outer dans
la variable res :
res = outer()
print(res)
Après l'exécution du code, l'objet de la fonction sera affiché :
<function outer.<locals>.inner at 0x000001564A212B90>
Si on appelle la variable res avec
des parenthèses, le message
'+++' sera retourné :
print(res()) # affichera '+++'
On peut réécrire le code pour que res
contienne outer avec deux paires de
parenthèses - pour appeler elle-même et la fonction
inner. Il s'ensuit que l'on peut
ajouter des parenthèses supplémentaires
à droite de la fonction externe selon le nombre
de fonctions qu'elle imbrique :
res = outer()()
print(res) # affichera '+++'
Voici le code suivant :
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Dites ce qui sera affiché dans la console.
Voici le code suivant :
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Dites ce qui sera affiché dans la console.