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,…: e où e 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.