Lambda function trong Python: Cú pháp và cách dùng
Khi học Python, bạn sẽ sớm gặp từ khóa lambda — một cách viết hàm ngắn gọn chỉ trong một dòng.
Lambda function còn được gọi là hàm vô danh (anonymous function) vì nó không cần tên.
Trong bài viết này, chúng ta sẽ tìm hiểu lambda là gì, cú pháp ra sao, và khi nào nên dùng.
Lambda function trong Python là gì?
Lambda function là một hàm nhỏ, không có tên, được định nghĩa chỉ trong một dòng code. Tên "lambda" bắt nguồn từ Lambda Calculus — nền tảng toán học của lập trình hàm (functional programming).
Điểm đặc biệt của lambda:
- Viết gọn trong 1 dòng
- Chỉ chứa 1 biểu thức (expression), kết quả được tự động
return - Không có tên — thường dùng trực tiếp làm tham số cho hàm khác
- Là first-class function: có thể gán vào biến, truyền làm đối số, trả về từ hàm
Nếu bạn chưa biết Python là gì, hãy đọc bài Python là gì? Tổng quan cho người mới bắt đầu trước nhé.
Cú pháp cơ bản của lambda function
Cú pháp lambda rất đơn giản:
lambda <tham_số>: <biểu_thức>
# Lambda cộng hai số
add = lambda x, y: x + y
print(add(3, 5)) # 8
print(add(10, 20)) # 30
# Lambda không có tham số
greet = lambda: "Xin chào Python!"
print(greet()) # Xin chào Python!
# Lambda với điều kiện inline
check_age = lambda age: "Người lớn" if age >= 18 else "Trẻ em"
print(check_age(20)) # Người lớn
print(check_age(15)) # Trẻ em
So sánh lambda và def: Khác nhau ở đâu?
# Dùng def — truyền thống
def square_def(x):
return x ** 2
# Dùng lambda — gọn hơn
square_lambda = lambda x: x ** 2
print(square_def(5)) # 25
print(square_lambda(5)) # 25
Tìm hiểu thêm về hàm trong Python tại bài viết Hàm (function) trong Python: Hướng dẫn từ A đến Z.
Kết hợp lambda với map(), filter(), sorted()
numbers = [1, 2, 3, 4]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled) # [2, 4, 6, 8]
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens) # [2, 4]
data = [{"name": "Python", "score": 90}, {"name": "JS", "score": 85}]
sorted_data = sorted(data, key=lambda x: x["score"], reverse=True)
print(sorted_data) # [{"name": "Python", "score": 90}, {"name": "JS", "score": 85}]
Để hiểu sâu hơn về list trong Python, đọc bài List trong Python: Tất cả những gì bạn cần biết.
Khi nào nên dùng lambda? Khi nào không nên?
# KHÔNG NÊN: lambda phức tạp, khó đọc
process = lambda x: x**2 if x > 0 else -x if x < 0 else 0
# NÊN: dùng def cho logic phức tạp
def process(x):
"""Xử lý số: dương thì bình phương, âm thì lấy giá trị tuyệt đối, 0 giữ nguyên."""
if x > 0:
return x ** 2
elif x < 0:
return -x
else:
return 0
Tổng kết và bước tiếp theo
- Lambda function là hàm vô danh, viết gọn trong 1 dòng, 1 biểu thức
- Cú pháp:
lambda tham_số: biểu_thức(không cầnreturn) lambdakhácdefở chỗ: ngắn gọn hơn nhưng bị giới hạn hơn- Dùng tốt nhất với:
map(),filter(),sorted() - Với logic phức tạp, luôn ưu tiên
def