2.1 Définition des fonctions lambda
Les fonctions lambda, aussi connues sous le nom de fonctions anonymes, sont des
fonctions compactes en une seule ligne sans nom, qui peuvent être créées avec le mot-clé lambda
.
![](https://cdn.javarush.com/images/article/6ed8fcaf-4cad-40e4-a9e5-9ff6b07e228b/512.jpeg)
Contrairement aux fonctions normales définies avec
def
, les fonctions lambda sont créées à la volée et sont généralement
utilisées pour des opérations simples effectuées en une ligne.
La syntaxe d'une fonction lambda consiste en le mot-clé
lambda
, suivi des arguments, un deux-points et
une expression :
lambda arguments: expression
Les fonctions lambda peuvent prendre n'importe quel nombre d'arguments, mais ne peuvent contenir qu'une seule expression. La valeur de cette expression est automatiquement renvoyée.
Exemples :
Fonction lambda | Fonction normale |
---|---|
|
|
|
|
|
|
2.2 Utilisation des fonctions lambda
Les fonctions lambda sont souvent utilisées en combinaison avec d'autres fonctions,
comme map()
, filter()
et
sorted()
, ainsi que comme arguments pour d'autres fonctions.
Utilisation avec map()
La fonction map()
applique une fonction donnée à chaque élément
d'un objet itérable et renvoie un itérateur avec les résultats.
Les fonctions lambda sont parfaites pour être utilisées avec map()
,
car elles permettent de définir succinctement une fonction pour transformer
des éléments.
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # Affiche: [1, 4, 9, 16, 25]
Utilisation avec filter()
La fonction filter()
renvoie un itérateur composé des
éléments d'un objet itérable pour lesquels une fonction donnée renvoie
True. Les fonctions lambda permettent de définir rapidement une condition pour le filtrage.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # Affiche: [2, 4, 6, 8, 10]
Utilisation avec sorted()
La fonction sorted()
trie les éléments d'un objet itérable.
Les fonctions lambda peuvent être utilisées pour définir un critère de tri personnalisé avec le paramètre key
.
words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # Affiche: ['date', 'apple', 'banana', 'cherry']
Fonctions lambda dans les expressions
Les fonctions lambda peuvent être utilisées dans d'autres expressions, comme les compréhensions de listes et les générateurs de dictionnaires.
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs) # Affiche: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
2.3 Limites des fonctions lambda
Les fonctions lambda présentent plusieurs limitations par rapport aux fonctions normales :
Limitation aux expressions :
Les fonctions lambda ne peuvent contenir qu'une seule expression et ne peuvent inclure
des instructions complexes, comme des boucles ou des instructions de contrôle
de flux (par exemple, if
, else
, etc.).
Absence de documentation :
Les fonctions lambda ne peuvent pas contenir de docstring, ce qui rend la documentation de leur fonctionnalité plus difficile.
Capacités de débogage limitées :
En raison de l'absence de nom et de documentation, les fonctions lambda sont plus difficiles à déboguer par rapport aux fonctions normales.
Exemple de limitation des fonctions lambda
Essayer d'utiliser plusieurs expressions à l'intérieur d'une fonction lambda entraînera une erreur de syntaxe :
# Ce code provoquera une erreur
invalid_lambda = lambda x: x ** 2; print(x)
GO TO FULL VERSION