Le langage Python propose l’utilisation des fonctions lambda. Il s’agit d’une fonction anonyme qui n’a qu’une seule instruction. Ces fonctions se comportent de la même manière que les fonctions régulières déclarées par le mot-clé « def ». Elles sont généralement utilisées à l’intérieur de d’autres fonctions.
Pour bien comprendre pourquoi et comment on les utilise, partons d’un exemple simple :
On a ici une fonction qui a pour but de retourner une liste. Elle prend en paramètre une liste. Pour chaque élément de la liste, Python va tester si l’élément est un multiple de 2. Si c’est le cas, l’élément est rajouté dans une nouvelle liste. Quand Python a fini de boucler sur la liste d’origine, il retourne la liste des divisibles par 2.
Pour réussir ce code, on a pris le temps de développer ligne pas ligne la boucle ‘for’. Mais il est possible de faire exactement la même chose avec un code simplifié :
Cette fonction nous amène au même résultat. Sauf que cette fois ci on a mis directement dans l’instruction ‘return’. On peut lire le code de la manière suivante : A partir du premier élément ‘i’, pour chaque élément ‘i’ de la liste, si l’élément est un multiple de 2 alors on ajoute cet élément dans la liste que l’on retourne à l’utilisateur.
Maintenant voyons comment et pourquoi se servir d’une fonction lambda dans cet exemple :
L’instruction que l’on a ici renvoie le même résultat. On constate dans le code l’utilisation de la fonction lambda. La fonction lambda renvoie un objet qui est affecté à la variable ‘a’, exactement comme fonction classique. On peut lire le code de la manière suivante : A partir du premier élément ‘i’, pour chaque élément ‘i’ du filtre sur les multiples de 2 de la liste, on renvoie un objet qui sera stocké dans une liste appelée ‘a’.
La fonction lambda correspond dans le deuxième exemple à la partie du code : « if i % 2 == 0 » ou bien dans le premier exemple à la partie du code : « if i % 2 == 0: new_liste.append(i) ».
On retrouve bien les caractéristiques de la fonction lambda : elle est anonyme, elle n’a qu’une seule instruction (mais peu avoir autant d’argument que l’on souhaite) et elle intervient à l’intérieur d’une autre fonction qui est ‘filter()’.
On l’utilise ici parce qu’on souhaite l’utiliser qu’une seule fois. On ne pourra pas l’utiliser une deuxième fois puisqu’elle n’a pas de nom. On ne peut que réutiliser son résultat et non pas sa fonctionnalité. Ce n’est pas la même chose.
Vous pouvez consulter nos formations sur cette page.
N'hésitez pas également à consulter nos divers articles comme celui-ci.