Les fonctions lambda
Les fonctions lambda, des fonctions anonymes
Partons de fonctions régulières comme celles que nous avons vues dans un chapitre précédent :
# fonction qui renvoie le carré du nombre passé en paramètre
def carre(x):
return x * x
# fonction qui renvoie la puissance d'un nombre (le nombre et la puissance sont passés
# en paramètres)
def puissance(x,y):
return x ** y # renvoie le résultat de x à la puissance y
# utilisation de ces fonctions dans la partie principale du programme
print(carre(3)) # renvoie 9
print(carre(12)) # renvoie 144
print(puissance(2,3)) # renvoie 8 (2 à la puissance 3)
Il est possible de faire la même chose avec le code suivant :
## fonctions lambda
carre_l = lambda x:x*x
print(carre_l(3)) # renvoie 9
puissance_l = lambda x,y:x**y
print(puissance_l(2,3)) # renvoie 8
Comprendre le programme :
- au lieu d'utiliser une fonction régulière, on utilise une fonction lambda qui se déclare avec le mot-clef lambda.
- cette fonction lambda est anonyme, elle n'a pas de nom comme dans le cas des fonctions régulières.
- pas de return non plus pour renvoyer le résultat de la fonction, il est implicite.
Quel intérêt ?
- elle tient en une seule ligne au lieu de plusieurs.
- c'est une fonction "jetable" : on peut ne l'utiliser qu'une seule fois sans lui donner de nom.
Une limite cependant :
- on ne peut avoir plus d'une instruction dans une fonction lambda
On peut encore optimiser ce code :
carre = (lambda x:x*x)(3)
print(carre) # renvoie 9
puissance = (lambda x,y:x**y)(2,3)
print(puissance) # renvoie 8