Que sont les fonctions lambda en Python
Les fonctions lambda offrent une manière compacte et élégante de définir des fonctions directement dans les expressions. En langage Python, on les appelle aussi fonctions lambda ou fonctions anonymes. Ce nom vient du fait qu'elles sont créées sans nom et sont généralement utilisées localement, là où il n'est pas pertinent de définir une fonction complète avec le mot-clé def.
Les fonctions lambda se distinguent par leur simplicité et leur facilité d'utilisation. Elles sont souvent employées avec des fonctions d'ordre supérieur comme map(), filter() et sorted(). Les fonctions lambda sont également très utilisées dans les bibliothèques populaires : pandas, NumPy, Flask, Tkinter et bien d'autres outils de l'écosystème Python.
Syntaxe de base des fonctions lambda
Structure d'une expression lambda
La syntaxe d'une fonction lambda en Python est la suivante :
lambda arguments: expression
Où :
- arguments — la liste des paramètres de la fonction, comme pour une fonction classique
- expression — une seule expression dont le résultat est renvoyé comme valeur de la fonction
Caractéristiques des fonctions lambda
Les fonctions lambda en Python possèdent plusieurs propriétés importantes :
- Elles retournent toujours le résultat de l'expression automatiquement
- Elles n'utilisent pas le mot-clé return
- Le résultat de l'expression est la valeur de retour
- Elles ne supportent qu'une seule expression dans le corps de la fonction
Exemples pratiques d'expressions lambda
Opérations mathématiques simples
# Calcul du carré d'un nombre
square = lambda x: x ** 2
print(square(5)) # 25
# Addition de deux nombres
add = lambda a, b: a + b
print(add(3, 7)) # 10
# Vérification de la parité d'un nombre
is_even = lambda x: x % 2 == 0
print(is_even(4)) # True
Lambda avec expressions conditionnelles
# Détermination de la valeur maximale
max_value = lambda x, y: x if x > y else y
print(max_value(10, 15)) # 15
# Catégorisation des nombres
categorize = lambda x: "positif" if x > 0 else "négatif" if x < 0 else "zéro"
Comparaison entre lambda et fonctions classiques
Différences clés
| Caractéristique | Fonction classique (def) | Fonction lambda |
|---|---|---|
| Syntaxe | def func(x): return x * 2 | lambda x: x * 2 |
| Nombre d'expressions | Plusieurs | Une seule |
| Nommage | Possède un nom | Généralement anonyme |
| Domaine d'utilisation | Réutilisation | Opérations ponctuelles |
| Documentation | Supporte les docstrings | Ne supporte pas |
| Annotations de type | Supportées | Support limité |
Quand choisir lambda
Les fonctions lambda sont particulièrement efficaces dans les cas suivants :
- Opérations simples et courtes
- Utilisation comme arguments d'autres fonctions
- Calculs temporaires sans besoin de réutilisation
- Travail avec des fonctions d'ordre supérieur
Utilisation de lambda avec les fonctions d'ordre supérieur
Fonction map()
La fonction map() applique une fonction donnée à chaque élément d'un itérable :
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
print(squares) # [1, 4, 9, 16, 25]
# Conversion de chaînes en majuscules
words = ["hello", "world", "python"]
uppercase = list(map(lambda s: s.upper(), words))
print(uppercase) # ['HELLO', 'WORLD', 'PYTHON']
Fonction filter()
Filter() crée un itérateur à partir des éléments pour