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:

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!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!