functools.partial
?是 Python 的?functools
?模塊中的一個非常有用的函數,它用于部分應用一個函數。這意味著你可以創建一個新的函數,這個新函數是原函數的一個子集,即預先填充了原函數的一些參數,并返回這個新函數。這樣,當你調用這個新函數時,你只需要提供那些未被預先填充的參數即可。
使用?functools.partial
?的好處包括:
-
代碼重用:通過預先填充一些參數,你可以輕松地重用同一個函數的不同變體,而無需編寫額外的包裝函數。
-
參數默認值:雖然 Python 允許函數參數有默認值,但使用?
partial
?可以讓你在運行時動態地設置這些默認值,而不是在函數定義時靜態地設置。 -
更清晰的調用:當函數有很多參數,而你總是使用相同的幾個參數值時,使用?
partial
?可以讓你的函數調用更加清晰和簡潔。
示例
假設你有一個計算矩形面積的函數:
def rect_area(width, height): return width * height
from functools import partial # 創建一個新的函數,它總是將 width 設置為 10
ten_wide_rect = partial(rect_area, width=10) # 現在,你可以像調用普通函數一樣調用 ten_wide_rect,但只需要提供 height 參數
print(ten_wide_rect(5)) # 輸出: 50