Fungsi Lambda dalam Python
Katakan kita ada fungsi func,
yang parameternya menerima senarai dan
callback. Fungsi akan mencipta senarai baharu
dari elemen senarai asal. Pada
masa yang sama, callback akan digunakan
pada setiap elemen:
pythondef func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Sekarang mari kita cipta fungsi square,
yang akan mengkuadratkan nombor yang
diberikan kepadanya:
pythondef square(num):
return num ** 2
Mari kita berikan kepada parameter func
senarai nombor dan fungsi square
sebagai callback:
pythonprint( func([1, 2, 3], square) )
Senarai baharu yang terdiri daripada kuasa dua nombor akan dipaparkan dalam konsol:
python[1, 4, 9]
Walau bagaimanapun, kod ini boleh
disingkatkan dengan ketara dengan menggunakan
fungsi lambda
- fungsi tanpa nama yang dipanggil dengan
kata kunci lambda dan
ditulis dalam satu baris. Oleh itu, hanya
fungsi yang kodnya mengambil satu baris boleh
ditulis semula ke dalam fungsi lambda.
Sintaks fungsi lambda kelihatan seperti ini:
pythonlambda parameter fungsi: operasi dengan parameter fungsi
Mari kita tulis semula fungsi square
menggunakan fungsi lambda dan berikannya kepada
parameter func:
pythonprint( func([1, 2, 3], lambda num: num ** 2) )
Fungsi lambda boleh ditulis ke dalam pembolehubah:
pythonsquare = lambda num: num ** 2
print( func([1, 2, 3], square) )
Tulis semula kod berikut melalui fungsi lambda:
pythondef func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Tulis semula kod berikut melalui fungsi lambda:
pythondef 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) )
Tulis semula kod berikut melalui fungsi lambda:
pythondef func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))