Hàm bộ phận Partial function trong Python cho phép lập trình viên dẫn xuất/trích xuất một hàm có x tham số thành một hàm mới có ít tham số hơn và có các giá trị cố định được cung cấp sẵn cho một số đối số nhất định của hàm. Hơi khó hiểu phải không các bạn, ta có thể tóm tắt lại một chút về Hàm bộ phận như sau: Hàm bộ phận trong Python sẽ cung cấp các giá trị mặc định cho một số tham số của hàm, nếu chúng không có giá trị mặc định nào (hoặc ghi đè lại các giá trị mặc định của các tham số của hàm).
Ví dụ mô tả cách sử dụng hàm bộ phận:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
from functools import partial
# A normal function
def f(a, b, c, x):
return 1000*a + 100*b + 10*c + x
# A partial function that calls f with
# a as 3, b as 1 and c as 4.
g = partial(f, 3, 1, 4)
# Calling g()
print(g(5))
Kết quả in ra là:
3145
Trong ví dụ trên, chúng ta đã truyền vào trước cho hàm f() một số giá trị hằng tương ứng dành cho tham số a, tham số b và tham số c. Và hàm g() sau đó chỉ cần nhận vào một đối số duy nhất, dành cho tham số x.
from functools import *
# A normal function
def add(a, b, c):
return 100 * a + 10 * b + c
# A partial function with b = 1 and c = 2
add_part = partial(add, c = 2, b = 1)
# Calling partial function
print(add_part(3))
Kết quả in ra là:
312
– Hàm bộ phận có thể được sử dụng để dẫn xuất ra các hàm đặc thù từ các hàm chung và do đó giúp chúng ta tái sử dụng lại code tốt hơn.
– Tính năng hàm bộ phận – partial function trong Python thì tương tự với tính năng bind (hàm bind()) trong ngôn ngữ C++.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!