Hàm Lambda Python là hàm một dòng, vô danh (anonymous). Biểu thức Lambda Python hữu ích cho hàm một dòng không cần tên, như lọc danh sách, chuyển đổi chữ hoa thường, nhân số.
Khi viết chương trình thực hiện tác vụ tương tự nhiều lần, không thực tế lặp lại mã vì nghĩa là phải cập nhật mọi instance nếu cần thay cách tác vụ hoạt động. Codebase càng lớn, càng lâu thay đổi.
Đó là lúc hàm hữu ích. Python có loại hàm đặc biệt gọi anonymous function (hàm vô danh) cho phép khai báo hàm nhanh: biểu thức lambda.
Hướng dẫn thảo luận cách dùng lambda function Python tự động hóa quy trình lặp lại. Chúng ta cung cấp hai ví dụ lambda function hoạt động để bạn có tài liệu viết lambda riêng.
Hàm Là Gì?
Trong lập trình, hàm là khối mã thực hiện tác vụ cụ thể.
Lý do lớn coder dùng hàm: giúp giảm lặp lại mã. Nếu gói quy trình thành hàm, gọi ở đâu chương trình. Không cần lặp mã nhiều lần.
Cũng giúp dev viết mã dễ bảo trì. Cần thay quy trình, chỉ sửa hàm. Không sửa nhiều dòng mã copy-paste chương trình.
Ví dụ hàm Python:
def say_hello(name):
print("Hello there, " + name)
say_hello("Arthur")
Chạy mã, trả về: Hello there, Arthur.
Mặc dù hàm hữu ích, nếu muốn làm đơn giản như chuyển mọi chuỗi trong danh sách thành chữ thường, viết hàm khá dài dòng. Phải gán tên hàm mới để mã hoạt động. Đó là lúc lambda function xuất hiện.
Lambda Function Là Gì?
Lambda function là loại hàm định nghĩa không tên. Hàm này đôi khi gọi anonymous function, vì không cần tên. Hàm trước tên sayHello, định nghĩa "def", lambda function không cần tên, định nghĩa "lambda".
Lợi ích chính lambda function: viết một dòng. Làm lambda hữu ích nếu quy trình nhanh muốn thực hiện nhiều lần. Vài trường hợp lambda hữu ích:
- Nhân số
- Chuyển chuỗi chữ hoa/thường
- Lọc danh sách
Cú pháp tạo lambda function Python:
name = lambda arguments: expression
Số đối số lambda function không giới hạn. Hãy đi qua ví dụ minh họa lambda Python. Giả sử muốn nhân số bảy. Dùng hàm:
def multiply_by_seven(number):
return number * 7
print(multiply_by_seven(2))
Chạy mã, trả về: 14.
Mặc dù mã hoạt động, không hiệu quả như có thể. Dùng cả dòng định nghĩa tên/đối số hàm và dòng tính/trả giá trị. Làm hàm hiệu quả hơn, dùng lambda function.
Lambda function thực hiện hành động giống trên:
multiply_by_seven = lambda n: n * 7 print(multiply_by_seven(2))
Mã trả về: 14. Như thấy, đầu ra hàm giống. Khác biệt: dùng lambda function thay hàm thường. Trong trường hợp:
- Từ khóa lambda chỉ định khai báo lambda function
- n là đối số hàm
- n * 7 là biểu thức đơn cho lambda function
Khi Nào Lambda Function Dùng?
Lambda function dùng rộng rãi Python. Ví dụ trước minh họa dùng lambda nhân hai số. Nhưng có vài trường hợp dùng phổ biến hơn.
Thường, lambda function dùng cùng hàm tích hợp như reduce(), map(), filter(). Lambda function đôi khi dùng với list comprehension thực hiện tác vụ lặp.
Giả sử sở hữu tiệm bánh muốn tạo danh sách bánh pie từ danh sách bánh ngọt bán. Làm bằng mã:
baked_goods = ['Blondie', 'Chocolate Chip Cookie', 'Apple Pie', 'Pecan Pie', 'Blackberry Pie', 'Scone'] pies = filter(lambda pie: "Pie" in pie, baked_goods) print(list(pies))
Mã trả về:
['Apple Pie', 'Pecan Pie', 'Blackberry Pie']
Phân tích cách hoạt động. Dòng đầu, khai báo danh sách bánh ngọt. Sau đó, dùng filter() lọc bánh ngọt chứa "Pie". filter() cho phép lặp qua mọi mục "baked_goods" lọc mục không đáp ứng tiêu chí.
Làm bằng định nghĩa lambda function kiểm tra chuỗi chứa "Pie", chỉ trả chuỗi nếu chứa "Pie". Lambda function:
lambda pie: "Pie" in pie
Bạn thấy Python lambda function không cần tên. Chúng tồn tại in-line, khác hàm truyền thống. Nếu mục đáp ứng tiêu chí, Lambda expression trả true; ngược lại không trả giá trị.
Cuối, chuyển biến "pies" thành list in bảng điều khiển. Làm vì filter() trả filter object tùy chỉnh, để xem pie, chuyển dùng list().
Kết Luận
Lambda function, hay anonymous function, cho phép định nghĩa hàm không tên. Hữu ích nếu cần thực hiện hành động nhiều lần mã.
Ví dụ, cần nhân số với số khác, dùng lambda function; hoặc dùng lambda lọc mục danh sách.