Funkcja lambda w Pythonie
Załóżmy, że mamy funkcję func,
która jako parametry przyjmuje listę i
funkcję zwrotną (callback). Funkcja utworzy nową
listę z elementów listy źródłowej. Przy
czym do każdego z elementów zostanie zastosowana
funkcja zwrotna:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Teraz utwórzmy funkcję square,
która będzie podnosić przekazaną jej liczbę
do kwadratu:
def square(num):
return num ** 2
Przekażmy w parametrach func
listę liczbową i funkcję square w
roli funkcji zwrotnej:
print( func([1, 2, 3], square) )
W konsoli wyświetli się nowa lista, składająca się z kwadratów liczb:
[1, 4, 9]
Jednak ten kod można znacząco
skrócić, używając funkcji lambda
- funkcji anonimowej, która jest wywoływana z
użyciem słowa kluczowego lambda i
zapisywana w jednej linii. Dlatego do funkcji lambda można przepisać tylko
funkcje, których kod zajmuje jedną linię.
Składnia funkcji lambda wygląda tak:
lambda parametr funkcji: operacja z parametrem funkcji
Przepiszmy funkcję square za
pomocą funkcji lambda i przekażmy ją do
parametru func:
print( func([1, 2, 3], lambda num: num ** 2) )
Funkcję lambda można zapisać w zmiennej:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Przepisz następujący kod za pomocą funkcji lambda:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Przepisz następujący kod za pomocą funkcji lambda:
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) )
Przepisz następujący kod za pomocą funkcji lambda:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))