Adloun

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.