Trong Python, hàm được coi là đối tượng bậc nhất (first-class citizens), có nghĩa là chúng có thể được xử lý như bất kỳ biến nào khác. Điều này giúp Python trở nên linh hoạt và hỗ trợ lập trình hướng hàm tốt hơn.

Cụ thể, một hàm trong Python có thể:
✔ Được gán cho biến khác.
✔ Được truyền làm đối số cho một hàm khác.
✔ Được trả về từ một hàm.
✔ Được lưu trữ trong các cấu trúc dữ liệu như danh sách hoặc từ điển.
1. Gán Hàm Cho Biến
Python cho phép gán một hàm cho một biến và gọi hàm thông qua biến đó.
Ví dụ:
def chao_ten(ten): return f"Xin chào, {ten}!" # Gán hàm cho biến f = chao_ten # Gọi hàm qua biến print(f("An"))
Kết quả:
Xin chào, An!
Giải thích:
Hàm chao_ten
được gán cho biến f
, sau đó f
được dùng để gọi hàm. Điều này cho thấy rằng hàm có thể được xử lý như một biến thông thường.
2. Truyền Hàm Làm Đối Số
Một hàm có thể nhận một hàm khác làm đối số, giúp hỗ trợ lập trình hàm bậc cao (higher-order functions).
Ví dụ:
def chao_ten(ten): return f"Xin chào, {ten}!" def goi_ham(ham, ten): return ham(ten) # Truyền hàm làm đối số print(goi_ham(chao_ten, "Nam"))
Kết quả:
Xin chào, Nam!
Giải thích:
Hàm goi_ham
nhận một hàm ham
và một chuỗi ten
, sau đó gọi ham(ten)
. Chúng ta truyền chao_ten
vào goi_ham
để gọi hàm một cách linh hoạt.
3. Trả Về Một Hàm Từ Một Hàm Khác
Python cho phép một hàm trả về một hàm khác. Điều này hữu ích để tạo hàm nhà máy (function factory).
Ví dụ:
def tao_thong_diep(thong_diep): def hien_thi(): return f"Nội dung: {thong_diep}" return hien_thi # Gọi hàm tạo hàm con ham = tao_thong_diep("Chào mừng bạn đến với Python!") print(ham())
Kết quả:
Nội dung: Chào mừng bạn đến với Python!
Giải thích:
Hàm tao_thong_diep
trả về một hàm hien_thi
. Sau đó, ham
lưu trữ hàm hien_thi
và có thể được gọi để lấy nội dung thông điệp.
4. Lưu Trữ Hàm Trong Cấu Trúc Dữ Liệu
Hàm có thể được lưu trữ trong danh sách hoặc từ điển và gọi thông qua chỉ mục hoặc khóa.
Ví dụ:
def cong(a, b): return a + b def tru(a, b): return a - b # Lưu trữ hàm trong từ điển phep_toan = { "cong": cong, "tru": tru } # Gọi hàm từ từ điển print(phep_toan["cong"](8, 5)) # 13 print(phep_toan["tru"](8, 5)) # 3
Kết quả:
13 3
Giải thích:
Hàm cong
và tru
được lưu trong một từ điển. Chúng ta có thể gọi các hàm này bằng cách truy xuất chúng từ từ điển thông qua khóa.
Kết Luận
✔ Python coi hàm là đối tượng bậc nhất, giúp viết mã linh hoạt hơn.
✔ Có thể gán hàm cho biến, truyền làm đối số, hoặc trả về từ một hàm khác.
✔ Hàm có thể được lưu trong danh sách hoặc từ điển để dễ dàng quản lý.
Sử dụng first-class functions giúp mã Python trở nên linh hoạt, ngắn gọn và dễ bảo trì hơn. 🚀