Python: Utilisation de Lambda
Introduction
Les fonctions anonymes sont des fonctions n'ayant pas de nom.
Parce que ces fonctions n'ont pas de nom, à l'endroit où l'on voudrait mettre leur nom, on trouve directement les instructions définissant la fonction introduites par une syntaxe particulière.
Dans les langages de programmation fonctionnelle, les fonctions anonymes sont souvent appelées fonctions lambda, en référence au lambda-calcul, outil théorique dans lequel on programme tout sous forme d'appel de fonction, alors même qu'aucune fonction de base n'est définie. [Wikipédia]
Lambda en Python
Lambda peut être utilisée comme:
- Une méthode. Elle peut stocker/retourner des variables (chaîne, entier, etc ..).
- Un mot-clé dans une programmation de haut niveau (tel est le cas de Python). Cependant en Python, on droit prendre en considération que Lambda ne peut retourner qu'une seule expression.
Exemple basé en Python3:
def faire(f, n):
print(f(n))
# Création de deux lambdas
carre = lambda x: x * x
cube = lambda x: x * x * x
# Passer lambda à faire
faire(carre, 4)
faire(cube, 3)
######################
Output/Affichage
######################
16
27
Usage de Lambda
- Lambda sans argument:
Dans l'exemple qui va suivre, on va utiliser lambda sans arguments et l’assigner à une variable pour calculer la somme de 1=
Dans l'exemple qui va suivre, on va utiliser lambda sans arguments et l’assigner à une variable pour calculer la somme de 1=
x = lambda n: sum(range(1,4))
print(x()) # Noter qu'on a invoquer x(), ceci dit, la variable x est une méthode
#########################
Output/Résultat
#########################
6
- Lambda sans variable de retour:
Dans l'exemple qui va suivre, on va utiliser lambda, par exemple, comme print(). À noter que print() renvoi None comme type de retour.
Dans l'exemple qui va suivre, on va utiliser lambda, par exemple, comme print(). À noter que print() renvoi None comme type de retour.
p = lambda x: print(x)un autre exemple:
p("Salut!")
p("Ça va?")
##################
Output/Résultat
##################
Salut!
Ça va?
import sys
info = lambda : sys.version_info
info()
##########################
Output/Résultat
##########################
sys.version_info(major=3, minor=4, micro=3, releaselevel='final', serial=0)
- Lambda récursive:
Ça veut dire qu'on peut utiliser une fonction lambda qui invoque une autre lambda, et ainsi de suite.
L'exemple qui va suivre expliquera mieux ce que je viens de dire.
Ps: L'utilisation excessive de cette faculté de lambda peut mener à une erreur de type:
In a RuntimeError: maximum recursion depth exceeded error
ajouter = lambda x: x+2
multiplier = lambda n: ajouter(n*2) # Appeler lambda dans une autre lambda!
print(mutiplier(3))
print(mutiplier(5))
#########################
Output/Résultat
#########################
8
12
- Lambda comme macro:
Lambda peut être utilisé pour réduire la répétition dans la syntaxe du code.
Voici un exemple:
ligne1 = "chat, chien"
ligne2 = "mouton, loup"
x = lambda s: s.strip().upper()
ligne1b = x(ligne1)
ligne2b = x(ligne2)
########################
Output/Résultat
########################
CHAT, CHIEN
MOUTON, LOUP
NB:
Lambda a plusieurs limites d'utilisation et elle ne pourra jamais remplacer la déclaration usuelle des méthodes en Python, ceci dit utiliser:
def methode(variable):
//code