Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
Les fonctions lambda, souvent appelées fonctions anonymes, permettent d'écrire de petites routines jetables en une seule ligne. Elles sont pratiques dans le code de style fonctionnel, surtout lorsqu'elles sont utilisées avec map, filter et reduce.
Qu'est-ce qu'une fonction lambda ?
Un lambda est une fonction définie avec le mot-clé lambda au lieu de def. Elle prend zéro ou plusieurs paramètres et renvoie la valeur d'une seule expression. Comme le corps est une expression, un lambda ne peut pas contenir d'instructions ou de plusieurs lignes.
Tout lambda a trois parties essentielles :
- Le mot-clé
lambda. - Un ou plusieurs paramètres (séparés par des virgules).
- Une seule expression qui produit la valeur de retour.
Par exemple, lambda x, y: x + y additionne deux nombres. Bien qu'anonyme, le lambda peut être assigné à une variable, passé à une autre fonction, ou appelé immédiatement.
Comment écrire un lambda
Syntaxe formelle :
lambda p1, p2, ... : expression
Remarquez l'absence de parenthèses autour des paramètres. L'expression peut utiliser toute opération Python valide.
Exemple 1 : Additionneur simple
additionneur = lambda x, y: x + y print(additionneur(1, 2)) # → 3
Exemple 2 : Inspection d'un objet lambda
chaine = 'une sorte de lambda inutile' print(lambda chaine: print(chaine)) # → <function <lambda> at 0x...>
Ici, le lambda n'est jamais appelé ; le print affiche l'objet fonction que le lambda renvoie.
Exemple 3 : Lambda appelé immédiatement (IIFE)
(lambda x: print(x))('IIFE en action') # → IIFE en action
Envelopper la définition entre parenthèses et ajouter des parenthèses après appelle le lambda immédiatement.
Exemple 4 : Lambdas vs fonctions régulières
# Fonction régulière
def afficher(arg):
return print(arg)
# Lambda qui appelle la fonction
guru(lambda: afficher('Appel lambda')) # → Appel lambda
Les deux extraits produisent la même sortie, mais la version lambda est plus concise quand vous n'avez besoin que d'un appel unique.
Utiliser les lambdas avec les fonctions intégrées
Les lambdas brillent quand ils sont passés comme rappels à des fonctions d'ordre supérieur. Voici des motifs courants.
Expression de fonction appelée immédiatement (IIFE) en Python
(lambda x: x + x)(2) # → 4
Filter
La fonction filter conserve les éléments qui satisfont un prédicat.
sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] filtres = filter(lambda x: x > 4, sequences) print(list(filtres)) # → [10, 8, 7, 5, 11]
Map
La fonction map transforme chaque élément.
sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] carres = map(lambda x: x * x, sequences) print(list(carres)) # → [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Reduce
Utilisez reduce pour accumuler une valeur unique à partir d'une séquence.
from functools import reduce sequences = [1, 2, 3, 4, 5] produit = reduce(lambda x, y: x * y, sequences) print(produit) # → 120
Quand utiliser (et éviter) les lambdas
Les lambdas sont idéales pour des opérations concises, à usage unique, qui tiennent dans une seule expression. Elles sont courantes dans les constructions de programmation fonctionnelle comme map et filter.
Cependant, évitez les lambdas trop complexes dans le code de production. Les one-liners longs et illisibles peuvent nuire à la maintenabilité. Dans ce cas, une fonction nommée avec une docstring claire est préférable.
Lambdas vs fonctions régulières
| Fonctionnalité | Lambda | Fonction régulière |
|---|---|---|
| Syntaxe | lambda x: x + x | def additionner(x): return x + x |
| Corps | Expression unique seulement | Plusieurs instructions autorisées |
| Nom | Anonyme (pas d'identifiant) | Doit avoir un nom |
| Retour | Implicite depuis l'expression | Explicite avec return |
| Cas d'usage | Logique courte, jetable | Logique réutilisable, complexe |
À retenir
- Utilisez les lambdas pour des fonctions compactes à expression unique.
- Préférez les fonctions nommées quand la logique est complexe ou réutilisable.
- Gardez le code lisible ; la simplicité prime sur l'astuce.
Python
- Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
- Fonctions lambda en Python : Guide pratique des fonctions anonymes
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques
- Fonction Python print() : Guide pratique avec exemples
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Maîtriser les chaînes format() en Python avec exemples clairs