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 :

pythondef 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 :

pythondef square(num):
  return num ** 2

Passons en paramètres à func une liste de nombres et la fonction square en tant que callback :

pythonprint( func([1, 2, 3], square) )

La nouvelle liste, composée des carrés des nombres, sera affichée dans la console :

python[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 :

pythonlambda 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 :

pythonprint( func([1, 2, 3], lambda num: num ** 2) )

La fonction lambda peut être assignée à une variable :

pythonsquare = lambda num: num ** 2
print( func([1, 2, 3], square) )
Задание 1

Réécrivez le code suivant en utilisant une fonction lambda :

pythondef func(num, clb):
  return clb(num)

def clb(num):
  return num + 1
  
print( func(2, clb) )
Задание 2

Réécrivez le code suivant en utilisant une fonction lambda :

pythondef 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) )
Задание 3

Réécrivez le code suivant en utilisant une fonction lambda :

pythondef func(num1, num2, clb):
  res = clb(num1) + num2
  return res
  
def clb(num):
  return num ** 3
  
print(func(2, 6, clb))