Accueil

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

Added 2018-06-26


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

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

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 à l’aide de la def  mot-clé, et cela a fonctionné pour vous jusqu'à présent. Alors, pourquoi y a-t-il un autre moyen 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 uniques dans les cas où une «vraie» fonction serait trop volumineuse et volumineuse.

Lambdas renvoie un objet fonction pouvant ê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 sur une ligne, où il serait excessif d'écrire une fonction normale complète. Ceci est couvert plus en détail ci-dessous, sous «Qu'en est-il des cartes, des filtres et des réductions?».

Comment utiliser Lambdas en Python

Avant de regarder une fonction lambda, voyons une fonction super basique définie de manière «traditionnelle»:


def add_five (nombre):
  numéro de retour + 5
 
print (add_five (number = 4))

comment utiliser les fonctions lamba en python

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 par le biais du nombre  paramètre.

Voici à quoi cela ressemble en tant que fonction lambda:


add_five = numéro lambda: nombre + 5
 
print (add_five (number = 4))

comment utiliser les fonctions lamba en python

Plutôt que d'utiliser def , le mot lambda  est utilisé. Aucune parenthèse n'est requise, mais tout mot 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 revenir  mot-clé - le lambda le fait pour vous automatiquement.

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))

<15>

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

Lambdas Python avec carte, filtre et réduction

La bibliothèque principale Python a trois méthodes appelées carte , réduire , et filtre . Ces méthodes sont probablement les meilleures raisons d'utiliser les fonctions lambda.

le carte  function 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. le liste  La fonction est utilisée pour reconvertir l'objet cartographique obtenu dans une liste.

Voici comment utiliser une carte sans lambda:


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

def add_five (nombre):
  numéro de retour + 5
 
new_list = list (map (add_five, list1))

print (new_list)

<17>

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

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


list1 = [2, 4, 6, 8]
imprimer (liste1)
 
new_list = list (map (lambda x: x + 5, list1))

print (new_list)

<17>

Comme vous pouvez le voir, le tout add_five  la fonction n'est plus requise. Au lieu de cela, la fonction lambda est utilisée pour garder les choses en ordre.

Avec le filtre  fonction, le processus est sensiblement le même. Filtre  prend une fonction et l'applique à chaque élément de la liste et crée une nouvelle liste avec uniquement les éléments qui ont renvoyé la fonction à True.

Premièrement, sans lambdas:


nombres = [1, 4, 5, 10, 20, 30]
imprimer (chiffres)

def Greater_than_ten_func (nombre):
  si numéro>
 dix:
    retourne True
  autre:
    retourne Faux

new_numbers = list (filter (larger_than_ten_func, numbers))
 
print (new_numbers)

<18>

Ce code n’a rien d’erreur, mais il est 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)

<18>

La fonction lambda a remplacé le besoin de tout plus_douan_func ! Et cela s’est fait en cinq mots simples. C'est pourquoi les lambdas sont puissants: ils réduisent l'encombrement lors de tâches simples.

Enfin, regardons réduire . Réduire est une autre fonction cool de Python. Il applique un calcul glissant à tous les éléments d'une liste. Vous pouvez utiliser ceci pour additionner un total ou multiplier tous les nombres:


de functools importer réduire

nombres = [10, 20, 30, 40]
imprimer (chiffres)

def été (a, b):
  retourne a + b
 
résultat = réduire (été, nombre)
imprimer (résultat)

<19>

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

L’histoire est très similaire avec un lambda, il n’ya pas besoin de fonction:


de functools importer réduire

nombres = [10, 20, 30, 40]
imprimer (chiffres)
 
résultat = réduire (lambda a, b: a + b, nombres)
imprimer (résultat)

<19>

Choses à surveiller avec Python Lambdas

Ces exemples ont montré à quel point les fonctions lambda sont faciles à utiliser, avec map, filter et réduire, à partir de la bibliothèque principale Python. Néanmoins, il existe quelques utilisations pour lesquelles les fonctions lambda n’aident pas.

Si vous faites autre chose qu'une tâche de base ou souhaitez appeler d'autres méthodes, utilisez une fonction normale. Les Lambda sont parfaits pour des 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 procéder à une refactorisation dans une méthode dédiée.






Nuage de tags

Choix de L'éditeur


Thomas Becket

Je suis un écrivain indépendant qui couvre la programmation et les logiciels.
Je suis étudiant en informatique et je m'intéresse à la programmation, aux logiciels et à la technologie
Gadgets technologiques et critiques 2019