Cách sử dụng hàm Lambda trong Python (Hàm ẩn danh)

Tìm hiểu cách sử dụng hàm lambda trong Python. Nắm vững các hàm ẩn danh, lệnh gọi lại nội tuyến và sắp xếp dữ liệu danh sách bằng khóa lambda.

Hãy thử Giải pháp này trong Trình chỉnh sửa

Tổng quan

Trong Python, các hàm là công dân hạng nhất, nghĩa là chúng có thể được gán cho các biến, được truyền dưới dạng đối số cho các hàm khác và được trả về từ các hàm. Trong khi các hàm tiêu chuẩn được khai báo bằng từ khóa `def`, Python cũng cung cấp cú pháp tốc ký để tạo các hàm nội tuyến ẩn danh: các hàm `lambda`.

Hàm lambda được xác định bằng từ khóa `lambda`, theo sau là danh sách các đối số, dấu hai chấm và một biểu thức. Cú pháp là `đối số lambda: biểu thức`. Không giống như các hàm `def`, lambdas không yêu cầu câu lệnh `return`; kết quả của biểu thức được trả về tự động. Chúng được giới hạn ở một dòng logic duy nhất, khiến chúng trở nên lý tưởng cho các hoạt động đơn giản, một lần.

Các hàm Lambda được sử dụng phổ biến nhất làm đối số cho các hàm bậc cao hơn như `sorted()`, `map()` và `filter()`. Ví dụ: bạn có thể chuyển hàm lambda cho đối số `key` của `sorted()` để xác định tiêu chí sắp xếp tùy chỉnh hoặc sử dụng chúng làm hàm gọi lại nhẹ bên trong các ứng dụng đồ họa hoặc hướng sự kiện.

Đầu ra mã & thực thi

Tập lệnh này trình bày cách xây dựng các hàm ẩn danh nhẹ bằng lambda.

# 1. Simple lambda function assigned to a variable
double = lambda x: x * 2
print("Double of 5:", double(5))

# 2. Multi-argument lambda
add = lambda x, y: x + y
print("Sum of 3 + 4:", add(3, 4))

# 3. Using lambda as a sorting key (sorting by age)
people = [
    {"name": "Alice", "age": 28},
    {"name": "Bob", "age": 22},
    {"name": "Charlie", "age": 35}
]
people.sort(key=lambda person: person["age"])
print("Sorted by age:", people)
Đầu ra thiết bị đầu cuối
Double of 5: 10
Sum of 3 + 4: 7
Sorted by age: [{'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 28}, {'name': 'Charlie', 'age': 35}]

Triển khai từng bước

  • Viết từ khóa lambda theo sau là tên tham số được phân tách bằng dấu phẩy của bạn.
  • Đặt dấu hai chấm, theo sau là biểu thức duy nhất bạn muốn đánh giá và trả về.
  • Truyền trực tiếp lambda dưới dạng lệnh gọi lại tới các hàm như được sắp xếp(), map() hoặc filter().

Câu hỏi thường gặp

Hàm lambda có thể chứa vòng lặp hoặc nhiều câu lệnh không?

Không, các hàm lambda trong Python bị giới hạn nghiêm ngặt ở một biểu thức duy nhất. Nếu bạn cần logic phức tạp, vòng lặp hoặc phép gán biến, bạn phải xác định hàm tiêu chuẩn bằng cách sử dụng def.

Tôi có nên gán hàm lambda cho biến không?

Nói chung là không. Nguyên tắc PEP 8 đề xuất sử dụng câu lệnh def tiêu chuẩn thay vì gán lambda cho một biến, vì các hàm tiêu chuẩn cung cấp tên theo dõi ngăn xếp tốt hơn.

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.