Les fonctions lambda en Python sont des outils puissants, compacts et essentiels pour tout développeur. Souvent méconnues, elles sont pourtant simples à utiliser une fois comprises correctement.
Dans ce guide détaillé, découvrez tout ce qu'il faut savoir sur les lambdas : leur définition, leur syntaxe, leurs applications pratiques et leurs limites. Basé sur les meilleures pratiques Python, ce tutoriel est idéal pour les débutants.
Avant de commencer, configurez un environnement virtuel Python ou testez les exemples dans un REPL en ligne comme Replit ou PythonAnywhere.
Une fonction lambda est une fonction anonyme, définie en une seule ligne sans nom. Contrairement aux fonctions def traditionnelles, elle est parfaite pour des opérations courtes et ponctuelles.
Les lambdas retournent un objet fonction assignable à une variable. Elles acceptent plusieurs arguments mais une seule expression (pas de bloc de code multiple ni d'appels à d'autres fonctions complexes).
Elles brillent avec map(), filter() et reduce() pour des traitements de listes concis.
Exemple de fonction classique :
def add_five(nombre):
return nombre + 5
print(add_five(nombre=4)) # Résultat : 9
Version lambda équivalente :
add_five = lambda nombre: nombre + 5
print(add_five(nombre=4)) # Résultat : 9
Syntaxe : lambda arguments: expression. Pas de return explicite.
Avec deux arguments :
add_numbers_and_five = lambda num1, num2: num1 + num2 + 5
print(add_numbers_and_five(num1=4, num2=3)) # Résultat : 12
Les fonctions map(), filter() et reduce() (du module functools) s'associent idéalement aux lambdas pour traiter les listes efficacement.
map() applique une fonction à chaque élément :
liste1 = [2, 4, 6, 8]
print(liste1)
nouvelle_liste = list(map(lambda x: x + 5, liste1))
print(nouvelle_liste) # [7, 9, 11, 13]
filter() sélectionne les éléments vérifiant une condition :
nombres = [1, 4, 5, 10, 20, 30]
print(nombres)
nouveaux_nombres = list(filter(lambda x: x > 10, nombres))
print(nouveaux_nombres) # [20, 30]
reduce() accumule un calcul sur la liste :
from functools import reduce
nombres = [10, 20, 30, 40]
print(nombres)
resultat = reduce(lambda a, b: a + b, nombres)
print(resultat) # 100
Les lambdas excellent pour les tâches simples. Pour du code complexe (multi-expressions, appels imbriqués), préférez def.
Refactorez si votre lambda grossit : clarté avant tout. Consultez notre guide sur la programmation orientée objet en Python et notre FAQ pour débutants.