Fonctions Python lambda avec exemples pratiques

Publié: 2021-06-21

Les fonctions Python lambda sont les fonctions qui sont petites et sont définies sans nom. En python, le mot clé 'def' est utilisé pour définir une fonction. Cependant, dans le cas de fonctions anonymes, le mot clé 'lambda' est utilisé pour définir ces fonctions. Par conséquent, le nom "fonctions lambda. Il peut y avoir un nom ou non attribué aux fonctions.

Comparées aux fonctions régulières en python, les fonctions lambda sont courtes.

Les fonctions lambda ont été ajoutées à la syntaxe des langages de programmation comme Python, Java, C++, C#, etc. ont dans leur syntaxe. Alors qu'il est utilisé comme concept de base dans les langages de ML ou LISP.

L'article se concentrera sur le concept des fonctions python lambda et leur utilisation.

Selon le type de langage de programmation, les fonctions lambda peuvent être utilisées de manière interchangeable avec les termes suivants :

  • Fonctions anonymes
  • Fonctions lambda
  • Expressions lambda
  • Abstraction lambda
  • Forme lambda
  • Littéraux de fonction

Table des matières

Calcul lambda

Le calcul lambda est un modèle de calcul basé sur lequel les expressions lambda sont construites. Le calcul lambda est basé sur l'abstraction pure et a été formalisé par Alonzo Church. Aussi connu sous le nom d'abstractions lambda, il fait référence au modèle original créé par Alonzo Church.

Tout calcul peut être codé par ce concept.

Syntaxe de la fonction lambda :

La syntaxe suivante est utilisée lors de l'utilisation des fonctions lambda en python.

arguments lambda : expression

Il peut y avoir n'importe quel nombre d'arguments dans la fonction lambda en python . Mais les fonctions ne peuvent avoir qu'une seule expression. Cette expression est d'abord évaluée, puis renvoyée. L'utilisation des fonctions lambda se trouve partout où il y a une exigence des objets de fonction.

Considérons un cas où une fonction anonyme à deux arguments est définie avec lambda mais n'est liée à aucune variable :

lambda x, y : x + y

Ici, les deux arguments sont pris par la fonction et la somme est renvoyée.

Il y a quelques caractéristiques montrées par une fonction lambda :

  • Il ne peut y avoir aucune instruction dans le corps de la fonction lambda mais ne peut contenir que des expressions.
  • Le code d'exécution est juste une seule ligne.
  • Les annotations de type ne sont pas prises en charge par la fonction lambda en python .
  • L'invocation immédiate est autorisée.

Les déclarations ne peuvent pas être utilisées

Comme mentionné, il ne peut y avoir aucune instruction lors de la définition des fonctions lambda. Si l'utilisateur utilise des instructions telles que pass, return, raise ou assert, il y aura une exception SyntaxError. Le résultat de l'exception peut être affiché via le code ci-dessous

La source

Dans le code ci-dessus, une erreur de syntaxe s'est produite lors de l'analyse du code contenant l' instruction assert dans le corps de la fonction lambda.

la fonction lambda ne contient qu'une seule expression

Contrairement à toutes les fonctions normales standard en python, une fonction lambda en python ne peut contenir qu'une seule expression. Le corps de la fonction lambda peut avoir l'expression répartie partout grâce à l'utilisation de plusieurs lignes entre parenthèses. Cependant, il reste toujours comme une expression unique.

La source

La chaîne "odd" est renvoyée lorsqu'il existe un argument "odd" tandis que la chaîne "even" est renvoyée lorsqu'il existe un argument "even". Deux lignes sont utilisées dans le code ci-dessus car elles sont entre parenthèses. Mais cela reste comme une expression unique.

Annotations de type

Avec la disponibilité de "l'indication de type" en python, les fonctions normales sont désormais préférées aux fonctions lambda en python. Avec la disponibilité d'outils tels que mypy, pyre, etc., une erreur de type peut être détectée avec full_name(). L'erreur de syntaxe associée à la fonction lambda est générée pendant l'exécution.

Exécution de la fonction appelée immédiatement (IIFE)

La fonctionnalité ne peut pas être utilisée en dehors d'un interpréteur Python. La définition de l'expression lambda en python peut être transmise à des fonctions d'ordre supérieur comme map(), etc.

Arguments dans une fonction lambda

Différentes manières sont prises en charge dans les expressions python lambda pour le passage des arguments comme :

  • Arguments positionnels
  • Arguments nommés également appelés arguments de mots clés
  • Liste variable d'arguments également appelée varargs.
  • Liste variable d'arguments de mots-clés
  • Arguments avec uniquement des mots-clés.

Décorateurs dans une expression Python Lambda

Le décorateur peut être défini comme une implémentation de pattern permettant d'ajouter un comportement à une classe ou une fonction. La syntaxe de @decorator est utilisée comme préfixe à une fonction pour exprimer un décorateur en python

Seulement avec l'argument 'Python', la fonction_décorée() est imprimée. Le comportement supplémentaire qui s'affiche est 'Calling function 'decorated_function'.

Python permet d'ajouter un décorateur à une fonction lambda, bien que l'utilisation de la syntaxe @decorator ne soit pas obligatoire. Le décorateur agit comme une fonction qui appelle la fonction lambda.

<lambda> apparaît là où la fonction lambda est identifiée. Alors que, dans le cas d'une fonction normale, c'est-à-dire add_two, elle est clairement identifiée.

À des fins de débogage, les fonctions lambda peuvent être décorées de cette manière.

Fermeture

Closure() en python est défini comme une fonction dans laquelle les variables libres, à l'exception des paramètres utilisés dans la fonction, sont liées à des valeurs spécifiques définies dans le cadre de la fonction. Nous pouvons appeler les fermetures de n'importe où. Les fonctions Lambda en python peuvent agir comme des fermetures d'une manière que les fonctions normales agissent comme une fermeture.

Utilisation des fonctions lambda

  • Chaque fois que nous avons besoin d'utiliser une fonction pendant une durée plus courte, les fonctions lambda sont utilisées dans ce cas.
  • Pour le passage de fonctions à une fonction d'une fonction d'ordre supérieur, des fonctions lambda sont appliquées. Les fonctions sont transmises en tant qu'arguments à ces fonctions d'ordre supérieur.
  • Les fonctions lambda en python peuvent être utilisées avec d'autres fonctions intégrées comme map(), etc.

Tester les fonctions lambda

Grâce à l'utilisation des modules doctest et unittest, les fonctions lambda en python peuvent être testées :

  • Les modules Unittest testent les fonctions lambda comme les fonctions régulières.
  • Dans le cas du module doctest, le code python est extrait de docstring , pour l'exécution du test. La syntaxe de la fonction lambda n'autorise pas la docstring . Mais, une chaîne peut être assignée à l'élément _doc_ du lambda qui est nommé.

Exemples de fonctions Python Lambda

Dans le code ci-dessous, une fonction avec le nom "identity" est définie où un argument est retourné. Il est défini comme une fonction standard de python grâce à l'utilisation du mot-clé "def".

>>> def identité (x);

….. retour x

Ici, x est pris comme argument par la fonction "identité" et lorsqu'il est invoqué, il renvoie l'argument.

Écrire le même code en utilisant lambda sera :

lambda x : x

L'expression se compose de trois parties : Lambda comme mot-clé, x qui est alors une variable liée et X qui est le corps du code.

  • La variable liée fait référence à l'argument transmis à une fonction lambda. Cependant, les variables libres sont celles qui ne sont pas liées et peuvent être référencées dans le corps de l'expression. Une constante peut être une variable libre ou des variables définies dans la portée de la fonction.

L'expression ci-dessus peut être élaborée comme

>>> lambda x : x + 1

Ici, la fonction ajoute 1 à l'argument. La fonction peut être ajoutée à un argument tout en entourant à la fois la fonction et l'argument grâce à l'utilisation de parenthèses.

>>>(lambda x : x + 1)(2)

3

Pour calculer la valeur dans une expression, une stratégie de réduction est appliquée. Comme dans l'exemple ci-dessus, la variable liée "x" peut être remplacée par l'argument 2.

(lambda x : x + 1 )(2) = Lambda 2 : 2 + 1

= 2 + 1

= 3

La fonction lambda étant une expression, le nommage peut être fait et le code ci-dessus peut être réécrit comme

>>> add_one = Lambda x : x + 1

>>> ajouter_un(2)

3

Cela équivaut à écrire :

def add_one(x):

retour x + 1

Un seul argument est pris par les fonctions lambda. De plus, lors de la définition de la fonction lambda en python , il n'y a pas de parenthèse autour des fonctions.

Pour transmettre plusieurs arguments à une fonction lambda python , les arguments sont répertoriés et séparés par l'utilisation d'une virgule (,). Il ne doit pas y avoir de parenthèses lors de la liste des arguments. Un exemple de fonctions multi-arguments est présenté ci-dessous :

Ici, deux arguments sont pris par la fonction lambda sous full_name. Une chaîne est renvoyée par la fonction qui interpole le premier et le dernier paramètres. Le code montre que lors de la définition des fonctions lambda, aucune parenthèse n'a été utilisée. L'appel de la fonction lambda suit le même chemin que celui d'une fonction standard en python, c'est-à-dire en utilisant des parenthèses qui entourent les arguments.

Fonctions Python lambda avec filter()

En python, la fonction filter() , accepte un argument sous la forme d'une liste et d'une fonction. A travers les éléments de la liste, la fonction peut être appelée qui renvoie une nouvelle liste d'éléments. La fonction de cette liste nouvellement créée est évaluée à True .

Un exemple de fonction filter() est présenté ci-dessous, utilisé pour filtrer les nombres pairs contenus dans une liste.

La source

La sortie générée par le programme est la nouvelle liste : [4, 6, 8, 12].

Fonction Python lambda avec map()

Une liste et une fonction sont prises comme argument dans la fonction python map(). Tous les éléments contenus dans la liste appellent la fonction qui renvoie une liste nouvellement créée avec les éléments renvoyés par la fonction.

Conclusion

Les fonctions Python lambda sont les fonctions à une seule ligne et déclarées sans nom, c'est-à-dire une fonction anonyme. Plusieurs nombres d'arguments peuvent être passés à une fonction lambda qui ne peut avoir qu'une seule expression. Parfois, la fonction lambda peut être transmise à d'autres fonctions en tant qu'argument. La fonction lorsqu'elle est définie avec le mot-clé 'def' en python peut se comporter comme une fonction normale.

L'article expliquait donc les concepts des fonctions lambda en python, leur application avec d'autres fonctions et aussi quelques exemples. Si vous souhaitez en outre acquérir une expertise sur le langage de programmation et maîtriser vos compétences en matière de codage, vous pouvez consulter le cours « Executive PG Program in Data Science » proposé par upGrad . Il est spécialement conçu pour tous les professionnels débutants âgés de 21 à 45 ans qui souhaitent acquérir leurs compétences en codage en science des données. Si vous êtes prêt à faire un pas vers vos rêves, présentez-vous et jetez un coup d'œil aux avantages du cours. Avec des projets industriels pratiques, le cours dispensé par l'IIIT-B est conçu pour répondre à vos besoins et vous préparer aux meilleures industries à venir.

Quelle est la différence entre une fonction normale et une fonction lambda ?

Nous savons qu'une fonction en Python est définie à l'aide du mot-clé def. De même, une fonction lambda est définie à l'aide du mot-clé lambda. Considérez l'exemple ci-dessous pour bien comprendre la différence entre les deux :
# Fonction normale def sq(x): return x*x # Fonction lambda lambda_sq = lambda x: x*x # Appel de la fonction normalement # Définie print(sq(10)) # Utilisation de la fonction lambda print(lambda_sq(10)) }
L'exemple ci-dessus illustre 2 fonctions calculant le carré d'un nombre. Sans lambda, nous devons créer une fonction sq(x), puis retourner le carré. D'autre part, avec lambda, toute la fonction s'est réduite à une seule ligne. Lambda ne nécessite pas d'instruction de retour.