【Python functools.partial 偏函式】
阿新 • • 發佈:2019-01-13
Python的functools模組提供了很多有用的功能,其中一個就是偏函式
(Partial function)。要注意,這裡的偏函式和數學意義上的偏函式不一樣。
functools.partial可以幫助我們建立一個偏函式,如下示例:
"""自己定義的偏函式"""
def int1(x, base=2):
return int(x, base)
print(int1('10000000')) # 128
# =======================================
# =======================================
"""通過functools.partial定義的偏函式"""
import functools
int2 = functools.partial(int, base=2)
print(int1('10000000')) # 128
# 上面僅僅是把base引數重設預設值為2,所以還是可以指定base的值的
print(int1('10101010', base=10)) # 10101010
所以,簡單總結functools.partial的作用就是,把一個函式的某些引數給固定住(也就是設定預設值),返回一個新函式,掉用這個新函式會更簡單。
建立偏函式時,實際上可以接收
函式物件
、*args
和**kwargs
這3個引數
像下面這樣:
int2 = functools.partial(int, base=2)
實際上是固定了int()函式的關鍵字引數
base
,也就是:int2('10000000')
相當於:
kwargs = {'base': 2} int('10000000', **kwargs)
再比如:
max2 = functools.partial(max, 10)
實際上會把
10
作為*args
的一部分自動加到左邊,也就是說:max2(2, 3, 4)
相當於:
args = (10, 2, 3, 4)
max(*args)結果為
10
.
小結
當傳入的引數個數太多,需要簡化時,使用functools可以建立一個新的函式,這個新函式可以固定住原函式的部分引數,從而在呼叫時更簡單。