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