Pythonda lambda-funksiya
Faraz qilaylik, bizda func funksiyasi bor,
uning parametrlari ro'yxat va
callback qabul qiladi. Funksiya yangi ro'yxat yaratadi
boshlang'ich ro'yxat elementlaridan. Shu bilan birga
har bir elementga callback qo'llaniladi:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Endi square funksiyasini yaratamiz,
u o'ziga berilgan sonni kvadratga ko'taradi:
def square(num):
return num ** 2
Keling, func parametrlariga
sonlar ro'yxati va square funksiyasini
callback sifatida uzatamiz:
print( func([1, 2, 3], square) )
Konsolga sonlarning kvadratlaridan tashkil topgan yangi ro'yxat chiqadi:
[1, 4, 9]
Biroq ushbu kodni lambda-funksiya
yordamida sezilarli darajada qisqartirish mumkin
- lambda kalit so'zi yordamida chaqiriladigan anonim funksiya,
bir qatorda yoziladi. Shuning uchun
lambda-funksiyaga faqat
kodi bir qatorni egallaydigan funksiyalarni qayta yozish mumkin.
Lambda-funksiyaning sintaksisi quyidagicha ko'rinadi:
lambda funksiya parametri: funksiya parametri bilan amal
Keling, square funksiyasini
lambda-funksiya yordamida qayta yozamiz va uni
func parametriga uzatamiz:
print( func([1, 2, 3], lambda num: num ** 2) )
Lambda-funksiyani o'zgaruvchiga yozish mumkin:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Quyidagi kodni lambda-funksiya orqali qayta yozing:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Quyidagi kodni lambda-funksiya orqali qayta yozing:
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) )
Quyidagi kodni lambda-funksiya orqali qayta yozing:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))