1. 程式人生 > >【Python functools.partial 偏函式】

【Python functools.partial 偏函式】

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可以建立一個新的函式,這個新函式可以固定住原函式的部分引數,從而在呼叫時更簡單。