Le nom d'une fonction est une valeur
Exercice supplémentaire · niveau 2 · sciences numériques et technologie (seconde), chapitre 5 — Les fonctions · Fonctions à plusieurs arguments
Énoncé
Exécuter ce programme et expliquer.
def carre(x):
return x * x
f = carre
print(f(6))
print(type(carre))
En déduire comment écrire une fonction applique(fonction, valeur) qui applique n'importe quelle fonction à une valeur.
Corrigé
L'affichage est 36 puis <class 'function'>.
Le nom d'une fonction est une variable comme une autre, dont la valeur se trouve être une fonction. f = carre ne l'appelle pas — il n'y a pas de parenthèses — mais donne un second nom au même objet. Les parenthèses, et elles seules, déclenchent l'appel.
On peut donc passer une fonction en argument :
def applique(fonction, valeur):
return fonction(valeur)
print(applique(carre, 6)) # 36
print(applique(abs, -6)) # 6
Cette idée est à la base de beaucoup d'outils : sorted(L, key=...) reçoit ainsi la fonction qui dit selon quel critère trier.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.