Hàm Lambda trong Python
Giả sử chúng ta có một hàm func,
nhận một danh sách và một callback làm tham số.
Hàm sẽ tạo ra một danh sách mới từ các phần tử của danh sách ban đầu.
Đồng thời, callback sẽ được áp dụng cho từng phần tử:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Bây giờ hãy tạo một hàm square,
hàm này sẽ bình phương số được truyền vào:
def square(num):
return num ** 2
Hãy truyền một danh sách số và hàm square
vào làm tham số cho func
với vai trò là callback:
print( func([1, 2, 3], square) )
Một danh sách mới, bao gồm các bình phương của các số, sẽ được in ra console:
[1, 4, 9]
Tuy nhiên, đoạn mã này có thể được rút gọn đáng kể
bằng cách sử dụng hàm lambda
- một hàm ẩn danh, được gọi bằng
từ khóa lambda và
được viết trên một dòng. Do đó, chỉ những
hàm có mã chiếm một dòng mới có thể được viết lại thành hàm lambda.
Cú pháp của hàm lambda trông như thế này:
lambda tham_số_của_hàm: phép_toán_với_tham_số
Hãy viết lại hàm square bằng
hàm lambda và truyền nó vào
tham số func:
print( func([1, 2, 3], lambda num: num ** 2) )
Hàm lambda có thể được gán vào một biến:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Viết lại đoạn mã sau bằng hàm lambda:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Viết lại đoạn mã sau bằng hàm 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) )
Viết lại đoạn mã sau bằng hàm lambda:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))