Лямбда-функсия дар Python
Фарз мекунем, ки мо функсияи func дорем,
ки параметрҳояш рӯйхат ва
коллбэк-ро қабул мекунад. Функсия рӯйхати нав
аз унсурҳои рӯйхати асли месозад. Дар ин ҳол ба
ҳар як аз унсурҳо коллбэк татбиқ карда мешавад:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Ҳоло функсияи square месозем,
ки рақами додашударо ба квадрат мебарорад:
def square(num):
return num ** 2
Биёед ба параметрҳои func
рӯйхати рақамӣ ва функсияи square-ро ҳамчун
коллбэк бифиристем:
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))