Last Updated on 2023-03-19 by Clay
關於 partial 函式
在閱讀一些大神所寫的 Python 原始碼的過程中,想必偶爾會見到 functools.partial
的使用,而直觀上,這個函式的意義似乎並不是那麼好理解。那麼,partial()
函式的功用究竟是什麼呢?
在 Python 中,functools
模組提供了一些用於高階函數操作的工具,其中之一就是 partial
。partial
可以用來實現函數區域性應用(Function Partial Application),亦即將一個函式的部分參數固定,並生成一個新的函式回傳,以便於後續應用。
最重要的是,我們就不用再重新自己手動定義一個新的函式了。
那這樣做的好處是什麼?因為有時候,我們會希望能對我們的函式進行參數的固定,大多數時候這樣可以提升可讀性與重複利用性;在某些需要傳遞函式給另一個函式使用的情況時,也能省略掉傳遞參數這一步驟。
使用方法
以下是使用 partial
函式的基本語法:
from functools import partial
new_function = partial(function, arg1, arg2, ...)
這裡的 function
是原始函式,arg1
、arg2
等是需要固定的參數。new_function
是經過區域性應用後的新函式。
舉個實際的例子。假設我們有一個簡單的加法函數:
def add(x, y):
return x + y
我們想要創建一個新的函數 add_five
,將第一個參數固定為 5,只需要提供第二個參數即可。使用 partial
函式可以輕鬆實現:
from functools import partial
add_five = partial(add, 5)
result = add_five(3) # Equal to add(5, 3)
print(result) # result = 8
在官方手冊的範例中,是採用了以下例子:
from functools import partial
basetwo = partial(int, base=2)
print(basetwo("10010")) # 18
如果我們固定住了參數,便能簡單建立全新的功能性函式。
總結
Python 的 functools.partial()
函式能夠實現函式的區域性應用,亦即將部分參數固定,建立一個全新的函式。
這樣的好處是有以下特點:
- 程式碼簡潔:使用
partial
函式可以使程式碼更簡潔,同時避免了開發者重新手動定義新的、功能相似的函式。 - 提高程式碼可讀性:
partial
函式可以明確表示出對原始函式參數的固定,讓程式碼的邏輯更加清晰與便於閱讀。 - 靈活性高:
partial
函式可以應用於任何可調用物件(callable),包括自定義函式、內建函式以及類別。
References
- Python Doc -
functools
— Higher-order functions and operations on callable objects - Partial Functions in Python - GeeksforGeeks