Lambda-functie in Python
Stel we hebben een functie func,
die als parameters een lijst en
een callback accepteert. De functie zal een nieuwe
lijst maken van de elementen van de oorspronkelijke lijst. Hierbij
wordt de callback toegepast op elk
van de elementen:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Laten we nu een functie square maken,
die het doorgegeven getal zal kwadrateren:
def square(num):
return num ** 2
Laten we aan de parameters van func
een numerieke lijst en de functie square doorgeven
als callback:
print( func([1, 2, 3], square) )
Er wordt een nieuwe lijst naar de console uitgevoerd, bestaande uit de kwadraten van de getallen:
[1, 4, 9]
Deze code kan echter aanzienlijk worden
ingekort door gebruik te maken van een lambda-functie
- een anonieme functie, die wordt aangeroepen met
behulp van het sleutelwoord lambda en
in één regel wordt geschreven. Daarom kunnen in
een lambda-functie alleen
functies worden herschreven waarvan de code één regel beslaat.
De syntaxis van een lambda-functie ziet er als volgt uit:
lambda parameter van de functie: bewerking met parameter van de functie
Laten we de functie square herschrijven met
behulp van een lambda-functie en deze doorgeven aan
de parameter func:
print( func([1, 2, 3], lambda num: num ** 2) )
Een lambda-functie kan in een variabele worden geschreven:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Herschrijf de volgende code met een lambda-functie:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Herschrijf de volgende code met een lambda-functie:
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) )
Herschrijf de volgende code met een lambda-functie:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))