Fonction lambda en Python
Supposons que nous ayons une fonction func,
qui prend en paramètres une liste et
un callback. La fonction va créer une nouvelle
liste à partir des éléments de la liste d'origine. Pour
ce faire, le callback sera appliqué
à chacun des éléments :
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Maintenant, créons une fonction square,
qui mettra au carré le nombre qui lui est
transmis :
def square(num):
return num ** 2
Passons en paramètres à func
une liste de nombres et la fonction square en
tant que callback :
print( func([1, 2, 3], square) )
La nouvelle liste, composée des carrés des nombres, sera affichée dans la console :
[1, 4, 9]
Cependant, ce code peut être considérablement
raccourci en utilisant une fonction lambda
- une fonction anonyme, qui est appelée avec
le mot-clé lambda et
écrite sur une seule ligne. C'est pourquoi seules les
fonctions dont le code tient sur une ligne peuvent être
réécrites en fonction lambda.
La syntaxe d'une fonction lambda se présente comme suit :
lambda paramètre de la fonction: opération avec le paramètre de la fonction
Réécrivons la fonction square en
fonction lambda et passons-la en
paramètre à func :
print( func([1, 2, 3], lambda num: num ** 2) )
La fonction lambda peut être assignée à une variable :
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Réécrivez le code suivant en utilisant une fonction lambda :
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Réécrivez le code suivant en utilisant une fonction lambda :
def func(num, clb1, clb2):
return (clb1(num), clb2(num))
def clb1(num):
return num + 1
def clb2(num):
return num - 1
print( func(2, clb1, clb2) )
Réécrivez le code suivant en utilisant une fonction lambda :
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))