Lambda funkcija Python'e
Tarkime, kad turime funkciją func,
kuri parametrais priima sąrašą ir
atgalinio ryšio funkciją (callback). Funkcija sukurs naują
sąrašą iš pradinio sąrašo elementų. Be to,
kiekvienam elementui bus pritaikyta
atgalinio ryšio funkcija:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Dabar sukurkime funkciją square,
kuri paduos jai perduotą skaičių
kvadratu:
def square(num):
return num ** 2
Perduokime į func parametrus
skaičių sąrašą ir funkciją square
kaip atgalinio ryšio funkciją:
print( func([1, 2, 3], square) )
Į konsolę bus išvestas naujas sąrašas, sudarytas iš skaičių kvadratų:
[1, 4, 9]
Tačiau šį kodą galima žymiai
sutrumpinti, naudojant lambda funkciją
- anoniminę funkciją, kuri iškviečiama su
raktažodžio lambda pagalba ir
užrašoma vienoje eilutėje. Todėl į
lambda funkciją galima perrašyti tik tas
funkcijas, kurių kodas užima vieną eilutę.
Lambda funkcijos sintaksė atrodo taip:
lambda funkcijos parametras: operacija su parametru
Perrašykime funkciją square
lambda funkcijos pagalba ir perduokime ją į
func parametrą:
print( func([1, 2, 3], lambda num: num ** 2) )
Lambda funkciją galima įrašyti į kintamąjį:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Perrašykite šį kodą naudodami lambda funkciją:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Perrašykite šį kodą naudodami lambda funkciją:
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) )
Perrašykite šį kodą naudodami lambda funkciją:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))