Lambda

Python SELF FR
Niveau 13 , Leçon 2
Disponible

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.

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

square = lambda x: x ** 2
print(square(5))  # Affiche: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Affiche: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

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)
        
    
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION