FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Un guide du débutant pour comprendre les fonctions Python Lambda

Les lambdas en Python sont l'une des fonctionnalités les plus utiles, importantes et intéressantes à connaître. Malheureusement, ils sont également faciles à mal comprendre et à se tromper.

Dans cet article, nous allons vous expliquer tout ce que vous devez savoir sur ces fonctions mystérieuses, comment les utiliser et pourquoi elles sont utiles.

Avant de plonger dans ces exemples pratiques, vous souhaiterez peut-être configurer un environnement virtuel Python. Si vous ne voulez même pas faire cela, vous devriez au moins essayer ces exemples avec un shell Python interactif en ligne.

Qu'est-ce qu'un Lambda en Python ?

Un lambda est simplement un moyen de définir une fonction en Python. Ils sont parfois appelés "opérateurs lambda" ou "fonctions lambda".

Si vous avez déjà utilisé Python, vous avez probablement défini vos fonctions en utilisant le def mot clé, et cela a bien fonctionné pour vous jusqu'à présent. Alors pourquoi existe-t-il une autre façon de faire la même chose ?

La différence est que les fonctions lambda sont anonymes. Cela signifie que ce sont des fonctions qui n'ont pas besoin d'être nommées. Ils sont utilisés pour créer de petites fonctions ponctuelles dans les cas où une "vraie" fonction serait trop grosse et encombrante.

Les lambdas renvoient un objet fonction, qui peut être affecté à une variable. Les lambdas peuvent avoir n'importe quel nombre d'arguments, mais ils ne peuvent avoir qu'une seule expression. Vous ne pouvez pas appeler d'autres fonctions à l'intérieur de lambdas.

L'utilisation la plus courante des fonctions lambda est dans le code qui nécessite une simple fonction d'une ligne, où il serait exagéré d'écrire une fonction normale complète. Ceci est couvert plus en détail ci-dessous, sous "Qu'en est-il de Mapper, Filtrer et Réduire ?".

Comment utiliser Lambdas en Python

Avant de regarder une fonction lambda, regardons une fonction super basique définie de manière "traditionnelle":

def add_five(nombre) :
numéro de retour + 5

imprimer(add_five(number=4))
Un guide du débutant pour comprendre les fonctions Python Lambda

Cette fonction est très basique, mais elle sert à illustrer les lambdas. Le vôtre peut être plus complexe que cela. Cette fonction ajoute cinq à tout nombre qui lui est transmis via le nombre paramètre.

Voici à quoi cela ressemble en tant que fonction lambda :

add_five =nombre lambda :nombre + 5 

imprimer(add_five(number=4))
Un guide du débutant pour comprendre les fonctions Python Lambda

Plutôt que d'utiliser def , le mot lambda est utilisé. Aucun crochet n'est requis, mais tous les mots suivant le lambda mot-clé sont créés en tant que paramètres. Les deux-points sont utilisés pour séparer les paramètres et l'expression. Dans ce cas, l'expression est nombre + 5 .

Il n'est pas nécessaire d'utiliser le retour mot-clé --- le lambda le fait automatiquement pour vous.

Voici comment créer une fonction lambda avec deux arguments :

add_numbers_and_five =lambda numéro1, numéro2 :numéro1 + numéro2 + 5 

print(add_numbers_and_five(number1=4, number2=3))
Un guide du débutant pour comprendre les fonctions Python Lambda

Si vous n'êtes toujours pas sûr de l'intérêt des lambdas, la section suivante plongera et vous aidera à voir la lumière.

Lambdas Python avec carte, filtrer et réduire

La bibliothèque principale Python a trois méthodes appelées map , réduire , et filtrer . Ces méthodes sont peut-être les meilleures raisons d'utiliser les fonctions lambda.

La carte fonction attend deux arguments :une fonction et une liste. Il prend cette fonction et l'applique à chaque élément de la liste, renvoyant la liste des éléments modifiés sous forme d'objet cartographique. La liste est utilisée pour reconvertir l'objet cartographique résultant en une liste.

Voici comment utiliser la carte sans lambda :

list1 =[2, 4, 6, 8] 
imprimer (liste1)
def add_five(nombre):
numéro de retour + 5

nouvelle_liste =liste(carte(add_five, list1))
imprimer(nouvelle_liste)
Un guide du débutant pour comprendre les fonctions Python Lambda

Cette fonction de carte est assez pratique, mais elle pourrait être meilleure. le add_five function est passé en argument, mais que se passe-t-il si vous ne voulez pas créer une fonction à chaque fois que vous utilisez map ? Vous pouvez utiliser un lambda à la place !

Voici à quoi ressemble ce même code, uniquement avec la fonction remplacée par un lambda :

list1 =[2, 4, 6, 8] 
imprimer (liste1)

nouvelle_liste =liste(carte(lambda x :x + 5, liste1))
imprimer(nouvelle_liste)
Un guide du débutant pour comprendre les fonctions Python Lambda

Comme vous pouvez le voir, l'ensemble add_five fonction n'est plus nécessaire. Au lieu de cela, la fonction lambda est utilisée pour garder les choses propres.

Avec le filtre fonction, le processus est sensiblement le même. Filtrer prend une fonction et l'applique à tous les éléments d'une liste et crée une nouvelle liste avec uniquement les éléments qui ont provoqué le retour de la fonction True.

Tout d'abord, sans lambda :

nombres =[1, 4, 5, 10, 20, 30] 
imprimer (chiffres)
def plus_que_dix_func(nombre) :
si nombre> 10 :
retourner Vrai
autre:
retourner Faux
nouveaux_nombres =liste(filtre(greater_than_ten_func, nombres))

print(new_numbers)
Un guide du débutant pour comprendre les fonctions Python Lambda

Il n'y a rien de mal avec ce code, mais il devient un peu long. Voyons combien de lignes un lambda peut supprimer :

nombres =[1, 4, 5, 10, 20, 30] 
imprimer (chiffres)
new_numbers =list(filter(lambda x :x> 10, nombres))
print(new_numbers)
Un guide du débutant pour comprendre les fonctions Python Lambda

La fonction lambda a remplacé le besoin de l'ensemble greater_than_ten_func ! Et c'est fait en cinq mots simples. C'est pourquoi les lambdas sont puissants :ils réduisent l'encombrement pour les tâches simples.

Enfin, regardons réduire . Réduire est une autre fonction Python intéressante. Il applique un calcul glissant à tous les éléments d'une liste. Vous pouvez l'utiliser pour calculer une somme totale ou multiplier tous les nombres :

depuis l'importation de functools réduire 
nombres =[10, 20, 30, 40]
imprimer (chiffres)
def été(a, b):
retourner a + b

résultat =réduire (été, nombres)
impression(résultat)
Un guide du débutant pour comprendre les fonctions Python Lambda

Cet exemple doit importer reduce depuis les functools module, mais ne vous inquiétez pas, le module functools fait partie de la bibliothèque principale de Python.

L'histoire est à peu près la même avec un lambda, il n'y a pas besoin de fonction :

depuis l'importation de functools réduire 
nombres =[10, 20, 30, 40]
imprimer (chiffres)

résultat =réduire(lambda a, b :a + b, nombres)
impression(résultat)
Un guide du débutant pour comprendre les fonctions Python Lambda

Éléments à surveiller avec Python Lambdas

Ces exemples ont montré à quel point les fonctions lambda sont simples, ainsi que mapper, filtrer et réduire, à partir de la bibliothèque principale de Python. Pourtant, il existe quelques utilisations où les fonctions lambda ne sont pas utiles.

Si vous faites autre chose qu'une tâche de base ou si vous souhaitez appeler d'autres méthodes, utilisez une fonction normale. Les lambdas sont parfaits pour les fonctions uniques et anonymes, mais ils ne doivent avoir qu'une seule expression. Si votre lambda commence à ressembler à une expression régulière, il est probablement temps de refactoriser dans une méthode dédiée.

Pour plus de conseils, consultez notre guide de la programmation orientée objet en Python et consultez notre guide FAQ pour les débutants en Python.


[]