Les fonctions lambda en python – quand les utiliser ?

Python et d’autres langages comme Java, C#, et même C++ ont vu des fonctions lambda ajoutées à leur syntaxe.
Dans cet article, nous essayerons de comprendre les fonctions lambda en python afin de les utiliser dans les meilleures conditions.

Que sont les fonctions lambda et en quoi diffèrent-elles des fonctions normales ?

En Python, le mot-clé lambda est utilisé pour déclarer une fonction anonyme, raison pour laquelle ces fonctions sont appelées « fonctions lambda« . Une fonction anonyme se réfère à une fonction déclarée sans nom. Bien que syntaxiquement elles soient différentes, les fonctions lambda se comportent de la même manière que les fonctions régulières qui sont déclarées en utilisant le mot-clé def.

Une fonction lambda en python a la syntaxe suivante.

lambda arguments: expression

Étayons nos propos au travers d’un cas pratique.
Imaginons qu’on voudrait créer une fonction pour calculer la somme de deux valeurs en python notre de code ressemblera à ça.

def sum_classic( a , b ):
  return a + b

Avec les lambda on aura le code suivant

sum_lambda = lambda a,b : a+b

NB: Les fonctions lambda en python ne peuvent contenir qu’une seule expression.

Pourquoi utiliser des fonctions anonymes (lambda) ?

De façon générale les fonctions anonymes sont utilisées lorsqu’il n’est pas nécessaire de nommer une fonction. En effet, il y a aucun intérêt de nommer une fonction qu’on utilisera qu’une fois 🤔. Mieux, on peut dire que l’utilisation de fonctions lambda est une question de style. Leur utilisation n’est jamais la seule façon de résoudre un problème ; chaque fonction anonyme pourrait plutôt être définie comme une fonction classique (régulière).
Cette citation de la FAQ « Python Design and History » semble donner le ton quant à l’attente générale concernant l’utilisation des fonctions lambda en Python :

Contrairement aux formes lambda des autres langages de programmation, où elles ajoutent des fonctionnalités, les lambdas en Python ne sont qu’une notation abrégée si vous êtes trop paresseux pour définir une fonction.

source

À mon avis c’est juste une manière de dire que l’utilisation des fonctions lambda est facultative. Cependant les fonctions lambda sont souvent utiles lorsqu’on a besoin de lisibilité dans notre code.

Quand utiliser les fonctions lambda ?

Les lambda montrent leur utilité lorsque nous sommes amenés à utiliser des fonctions qui prennent une autre fonction comme argument . Un exemple d’une telle fonction en python pourrait être : filter(), map() ou reduce().

Essayons d’être plus concret, je prendrai deux bouts de code l’un utilisant une lambda et l’autre une fonction classique.

some_numbers_list= [1,2,3,87,40,49,303,34,32,98]
filtered_list = list(filter(lambda x: x > 10, some_numbers_list))
...

def my_custum_filter(x):
  return x >10
some_numbers_list= [1,2,3,87,40,49,303,34,32,98]
filtered_list = list(filter(my_custum_filter, some_numbers_list))
...

Les deux bouts de codes ci-dessus font exactement la même tâche qui est de filtrer les valeurs supérieures à 10 dans la liste ‘some_numbers_list’ grâce à la fonction python filter() .
Cependant, force est de constater que le premier exemple est beaucoup plus lisible et compréhensible car on a toutes les informations sur une seule ligne (pas besoin de chercher la définition d’une fonction quelconque).

Aussi, vous pouvez utiliser les fonctions lambda avec pandas via les fonctions apply(), applymap() and map().

Ressources complémentaires

Syntactic sugar
Anonymous function
Lambda-calcul

Conclusion

En Python, une fonction lambda est une fonction d’une seule ligne déclarée sans nom, qui peut avoir un nombre quelconque d’arguments, mais elle ne peut avoir qu’une seule expression. Il arrive souvent qu’une fonction lambda soit passée en argument à une autre fonction. Il faut savoir qu’il n’y a aucune différence entre les fonctions lambda et les fonctions régulières sauf pour des raisons de syntaxe et de lisibilité du code. N’hésitez pas à laisser des commentaires pour les questions et suggestions 🙃.

3 réflexions sur “Les fonctions lambda en python – quand les utiliser ?”

  1. Je me trompe peut-être mais je vois également la fonction lambda comme un moyen de surcharger une fonction existante.
    Par exemple, lorsque l’on attache une fonction à la sélection d’un choix dans une combobox de Tkinter, par défaut seul l’event est passé à la fonction de callback. L’usage d’une fonction lambda me permet alors d’appeler ma fonction de callback avec des paramètres supplémentaires liés au contexte de la combobox.
    Du coup, je me trompe ?

    1. Lorsqu’on inverse Les expressions, Lambda est toujours prioritaire. exemples ci-dessous
      someL = [1,2,3,87,40,49,303,34,32,98]
      filtreL = list(filter(lambda e : e > 10, someL)) # ici e>10
      print (« dans lambda »,filtreL)

      def myfunction(x):
      return x<10 # ici l'inverse x<10
      someL = [1,2,3,87,40,49,303,34,32,98]
      filtre = list(filter(myfunction, someL))
      print (filtreL)

      RÈSULTATS :
      dans lambda [87, 40, 49, 303, 34, 32, 98]
      avec fonction [87, 40, 49, 303, 34, 32, 98]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.