Lambda-funksie in Python

Gestel ons het 'n funksie func, wat 'n lys en 'n callback as parameters aanvaar. Die funksie sal 'n nuwe lys skep uit die elemente van die oorspronklike lys. Met elke element sal die callback toegepas word:

pythondef func(lst, callback):
  res = []
  
  for el in lst:
    res.append(callback(el))
    
  return res

Laat ons nou 'n funksie square skep, wat die getal wat aan dit oorgedra word in die kwadraat sal verhef:

pythondef square(num):
  return num ** 2

Kom ons stuur die numeriese lys en die funksie square as callback na die parameters van func:

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

'N Nuwe lys, bestaande uit die kwadrate van die getalle, sal in die konsole vertoon word:

python[1, 4, 9]

Hierdie kode kan eger aansienlik verkort word deur die lambda-funksie te gebruik - 'n anonieme funksie wat met die sleutelwoord lambda aangeroep word en in een reël geskryf word. Daarom kan slegs funksies waarvan die kode een reël beslaan, naar 'n lambda-funksie oorgeskryf word.

Die sintaksis van die lambda-funksie lyk so:

pythonlambda funksie parameter: bewerking met die funksie parameter

Laat ons die funksie square met behulp van 'n lambda-funksie herskryf en dit na die parameter func stuur:

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

Die lambda-funksie kan in 'n veranderlike geskryf word:

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

Herskryf die volgende kode met 'n lambda-funksie:

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

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

Herskryf die volgende kode met 'n lambda-funksie:

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

Herskryf die volgende kode met 'n lambda-funksie:

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