Guide d'initiation à la compréhension des fonctions Python Lambda
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..
Avant de vous plonger dans ces exemples pratiques, vous souhaiterez peut-être configurer un environnement virtuel Python. Découvrez comment utiliser l'environnement virtuel Python. Découvrez comment utiliser l'environnement virtuel Python. Que vous soyez un développeur expérimenté ou que vous commenciez à apprendre configurer un environnement virtuel est essentiel pour tout projet Python. Lire la suite . Si vous ne voulez même pas faire cela, vous devriez au moins essayer ces exemples avec un shell Python en ligne interactif. Essayez Python dans votre navigateur avec ces shells interactifs en ligne gratuits Essayez Python dans votre navigateur avec ces shells interactifs en ligne gratuits, que vous soyez En parcourant ces exemples Python ou en examinant les bases des tableaux et des listes, vous pouvez tester le code directement dans votre navigateur. Voici les meilleurs interprètes en ligne Python que nous avons trouvés. Lire la suite .
Qu'est-ce qu'un Lambda en Python??
Un lambda est simplement un moyen de définir une fonction en Python. Ils sont parfois connus comme “opérateurs lambda” ou “fonctions lambda”.
Si vous avez déjà utilisé Python, vous avez probablement défini vos fonctions à l'aide du def mot-clé, et cela a bien 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ù un “réal” la fonction serait trop grosse et encombrante.
Lambdas retourne un objet fonction, qui peut être assigné à 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 de la carte, filtrer et réduire?”.
Comment utiliser Lambdas en Python
Avant de regarder une fonction lambda, regardons une fonction super basique définie par “traditionnel” façon:
def add_five (nombre): retourne le nombre + 5 print (add_five (nombre = 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 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 (nombre = 4))
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'y a pas besoin d'utiliser le revenir keyword-the lambda le fait pour vous automatiquement.
Voici comment créer une fonction lambda avec deux arguments:
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 de lambda, 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, en 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 résultant dans une liste.
Voici comment utiliser la carte sans lambda:
list1 = [2, 4, 6, 8] print (list1) def add_five (numéro): numéro de retour + 5 new_list = list (map (add_five, list1)) print (nouvelle_list)
Cette fonction de carte est assez pratique, mais elle pourrait être meilleure. la add_five La fonction est transmise sous forme d'argument, mais qu'en est-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, mais avec la fonction remplacée par un lambda:
list1 = [2, 4, 6, 8] print (list1) new_list = list (map (lambda x: x + 5, list1)) print (nouvelle_list)
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 ordonnées.
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:
numbers = [1, 4, 5, 10, 20, 30] print (numbers) def larger_than_ten_func (number): si number> 10: renvoie True sinon: renvoie False new_numbers = liste (filtre (supérieur_than_ten_func, nombres)) print (new_numbers) )
Il n'y a rien de mal avec ce code, mais ça devient un peu long. Voyons combien de lignes un lambda peut supprimer:
nombres = [1, 4, 5, 10, 20, 30] à imprimer (nombres) new_numbers = list (filtre (lambda x: x> 10, nombres)) à imprimer (new_numbers)
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 pour des 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:
depuis functools importer réduire les nombres = [10, 20, 30, 40] imprimer (nombres) def summer (a, b): renvoyer a + b résultat = réduire (été, nombres) imprimer (résultat)
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 semblable avec un lambda, il n'y a pas besoin de fonction:
depuis functools importer réduire les nombres = [10, 20, 30, 40] imprimer (nombres) résultat = réduire (lambda a, b: a + b, nombres) imprimer (résultat)
Choses à surveiller avec Python Lambdas
Ces exemples ont montré à quel point les fonctions lambda sont faciles à utiliser, de même que mapper, filtrer et réduire à partir de la bibliothèque principale Python. Pourtant, il existe quelques utilisations où 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 refactoriser une méthode dédiée..
Pour plus de conseils, consultez notre guide de la programmation orientée objet dans Python. Guide d'initiation à la programmation orientée objet de Python. Guide d'initiation à la programmation orientée objet de Python. Pour tirer pleinement parti des atouts de Python, vous allez apprendre à utiliser Python. programmation orientée objet (OOP). Lisez la suite et consultez notre guide de FAQ pour les débutants en Python. Questions les plus fréquemment posées sur la programmation Python Questions les plus fréquemment posées sur la programmation Python Dans cet article, nous vous expliquerons tout ce que vous devez savoir sur Python en tant que débutant. Lire la suite .
Explorez plus sur: Tutoriels de codage, Python.