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

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

Les lambdas 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 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 le faire, 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 déf mot-clé, et cela a bien fonctionné pour vous jusqu'à présent. Alors pourquoi y a-t-il une autre façon de faire la même chose ?



La différence est que les fonctions lambda sont anonymes. Ce qui 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 grande et volumineuse.

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 dans les lambdas.





L'utilisation la plus courante des fonctions lambda est dans le code qui nécessite une fonction simple 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 la carte, du filtre et de la réduction ? »

Comment utiliser les lambdas en Python

Avant d'examiner une fonction lambda, examinons une fonction super basique définie de manière «traditionnelle» :





def add_five(number):
return number + 5

print(add_five(number=4))

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 numéro paramètre.

Voici à quoi cela ressemble en tant que fonction lambda :

add_five = lambda number: number + 5

print(add_five(number=4))

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

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

télécharger des jeux gratuits sans publicité
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Si vous n'êtes toujours pas sûr du point des lambdas, la section suivante vous plongera et vous aidera à voir la lumière.

Python Lambdas 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.

Les carte La 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. Les liste La fonction est utilisée pour reconvertir l'objet cartographique résultant en une liste.

Voici comment utiliser map sans lambda :

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Cette fonction de carte est assez pratique, mais elle pourrait être meilleure. les ajouter_cinq La 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, uniquement avec la fonction remplacée par un lambda :

comment paraître inactif sur facebook
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Comme vous pouvez le voir, l'ensemble ajouter_cinq 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 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 lambdas :

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

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

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

La fonction lambda a remplacé le besoin de l'ensemble plus_que_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 ensemble :

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

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

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

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Choses à surveiller avec Python Lambdas

Ces exemples ont montré à quel point les fonctions lambda sont simples, ainsi que map, filter et reduce, à 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 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 le refactoriser en une méthode dédiée.

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

Partager Partager Tweeter E-mail 3 façons de vérifier si un e-mail est réel ou faux

Si vous avez reçu un e-mail qui vous semble un peu douteux, il est toujours préférable de vérifier son authenticité. Voici trois façons de savoir si un e-mail est réel.

Lire la suite
Rubriques connexes
  • La programmation
  • Python
  • Tutoriels de codage
A propos de l'auteur Joe Coburn(136 articles publiés)

Joe est diplômé en informatique de l'Université de Lincoln, au Royaume-Uni. C'est un développeur de logiciels professionnel, et lorsqu'il ne pilote pas de drones ou n'écrit pas de musique, on le trouve souvent en train de prendre des photos ou de produire des vidéos.

Plus de Joe Coburn

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner