S5, L3 Maths (MA) – Lionel Vaux Auclair

Fonction anonyme

En Python, une fonction est un objet comme un autre.

Par exemple, on peut écrire :

def successeur(x : int) -> int:
    return x+1
f = successeur

et vérifier que :

f(0) == 1

C’est surtout pratique pour donner une fonction comme argument, par exemple pour la fonction filter() de la bibliothèque standard de Python: filter(test,liste) renvoie un itérateur obtenu en ne conservant que les éléments de liste qui réussisent le test.

Testez:

def est_impair(n: int) -> bool:
    return n%2 == 1
print(list(filter(est_impair,range(10))))

Il souvent pénible d’écrire une fonction simple qu’on n’utilisera qu’une fois. À la place, on peut utiliser une fonction anonyme. C’est une expression de la forme lambda x,y,…: ee est une expression qui peut contenir les variables x, y, … Par exemple on aurait pu écrire:

successeur = lambda x: x+1
est_impair = lambda n: n%2 == 1

et surtout, on aurait pu s’abstenir de donner des noms à ces fonctions, et utiliser plutôt:

print(list(filter(lambda n: n%2,range(10))))

Le mot-clé lambda provient du λ-calcul.