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:
def 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:
def square(num):
return num ** 2
Kom ons stuur die numeriese lys en die funksie square as
callback na die parameters van func:
print( func([1, 2, 3], square) )
'N Nuwe lys, bestaande uit die kwadrate van die getalle, sal in die konsole vertoon word:
[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:
lambda 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:
print( func([1, 2, 3], lambda num: num ** 2) )
Die lambda-funksie kan in 'n veranderlike geskryf word:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Herskryf die volgende kode met 'n lambda-funksie:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Herskryf die volgende kode met 'n lambda-funksie:
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) )
Herskryf die volgende kode met 'n lambda-funksie:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))