Ламбда функција у Пајтону
Нека имамо функцију func,
која параметрима прима списак и
callback. Функција ће креирати нови
списак од елемената изворног списка. При
томе ће се на сваки од елемената применити
callback:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Сада ћемо креирати функцију square,
која ће дизати прослеђени јој број
на квадрат:
def square(num):
return num ** 2
Дајте да проследимо у параметре func
нумерички списак и функцију square у
капацитету callback-а:
print( func([1, 2, 3], square) )
У конзолу ће се исписати нови списак, састављен од квадрата бројева:
[1, 4, 9]
Међутим овај кôд можемо значајно
скратити, користећи ламбда функцију
- анонимну функцију, која се позива са
помоћу кључне речи lambda и
записује се у једној линији. Зато се у
ламбда функцију може преписати само
функција, чији кôд заузима једну линију.
Синтакса ламбда функције изгледа овако:
lambda параметар функције: операција са параметром функције
Дајте да преписемо функцију square са
помоћу ламбда функције и проследимо је у
параметар func:
print( func([1, 2, 3], lambda num: num ** 2) )
Ламбда функцију може се записати у променљиву:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Препишите следећи кôд преко ламбда функције:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Препишите следећи кôд преко ламбда функције:
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) )
Препишите следећи кôд преко ламбда функције:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))