Hàm Lambda trong Python: Hướng dẫn về hàm ẩn danh

Tìm hiểu cách viết hàm lambda ẩn danh bằng Python. Nắm vững các mẫu lập trình chức năng bằng cách sử dụng bản đồ(), bộ lọc() và sắp xếp() với cú pháp lambda.

Thử trong Trình chỉnh sửa

Tổng quan

Trong Python, hàm lambda—còn được gọi là hàm ẩn danh—là các hàm một dòng nhỏ, nhanh, không yêu cầu từ khóa `def` tiêu chuẩn hoặc tên chính thức. Chúng nhằm mục đích sử dụng tạm thời, nhanh chóng, cho phép bạn truyền logic chức năng dưới dạng đối số trực tiếp nội tuyến. Điều này làm cho mã của bạn gọn hơn, giảm chi phí viết các hàm trợ giúp chính thức chỉ được gọi ở một nơi.

Cú pháp của hàm lambda rất đơn giản: `` đối số lambda: biểu thức`. Không giống như các hàm tiêu chuẩn, lambda không có câu lệnh `return` rõ ràng; biểu thức được đánh giá và trả về tự động. Hơn nữa, các hàm lambda bị giới hạn ở một biểu thức duy nhất, nghĩa là bạn không thể viết các vòng lặp, bài tập hoặc khối điều kiện nhiều dòng phức tạp bên trong chúng, thực thi một cách tiếp cận chức năng, rõ ràng.

Hàm Lambda thường được sử dụng kết hợp với các hàm bậc cao tích hợp sẵn như `map()` (áp dụng một hàm cho mọi mục trong danh sách), `filter()` (giữ lại các mục khớp với một điều kiện) và `sorted()` (sắp xếp các mục bằng phím sắp xếp tùy chỉnh). Ví dụ: sắp xếp danh sách từ điển theo một khóa từ điển cụ thể thật dễ dàng khi sử dụng lambda làm khóa sắp xếp. Hiểu các hàm lambda sẽ cung cấp cho bạn một công cụ quan trọng để viết mã Python rõ ràng.

Đầu ra mã & thực thi

Sắp xếp danh sách từ điển phức tạp và lọc bộ dữ liệu bằng cách sử dụng các hàm ẩn danh nội tuyến.

# Sorting using lambda
students = [
    {"name": "Alice", "grade": 88},
    {"name": "Bob", "grade": 95},
    {"name": "Charlie", "grade": 90}
]

# Sort students by grade (descending)
sorted_students = sorted(students, key=lambda s: s["grade"], reverse=True)
print("Sorted students by grade:")
for student in sorted_students:
    print(f"- {student['name']}: {student['grade']}")

# Filtering using lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))
print(f"\nOdd numbers: {odd_numbers}")
Đầu ra thiết bị đầu cuối
Sorted students by grade:
- Bob: 95
- Charlie: 90
- Alice: 88

Odd numbers: [1, 3, 5, 7]

Triển khai từng bước

  • Chuyển tiêu chí sắp xếp tùy chỉnh tới list.sort() vàsort()
  • Áp dụng các phép biến đổi nội tuyến trong quy trình khoa học dữ liệu
  • Xác định lệnh gọi lại nhanh trong ứng dụng giao diện người dùng theo sự kiện

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

Hàm lambda có thể nhận nhiều đối số không?

Có, bạn có thể xác định nhiều đối số được phân tách bằng dấu phẩy, ví dụ: lambda x, y: x + y.

Tại sao các hàm lambda được gọi là ẩn danh?

Bởi vì chúng được tạo mà không có ràng buộc về tên, không giống như các hàm def đăng ký một tên cụ thể trong không gian tên cục bộ.

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.