2019-05-27 偏函數(shù)

functools.partial就是幫助我們創(chuàng)建一個(gè)偏函數(shù)的,不需要我們自己定義int2(),可以直接使用下面的代碼創(chuàng)建一個(gè)新的函數(shù)int2:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85

所以,簡(jiǎn)單總結(jié)functools.partial的作用就是,把一個(gè)函數(shù)的某些參數(shù)給固定?。ㄒ簿褪窃O(shè)置默認(rèn)值),返回一個(gè)新的函數(shù),調(diào)用這個(gè)新函數(shù)會(huì)更簡(jiǎn)單。

注意到上面的新的int2函數(shù),僅僅是把base參數(shù)重新設(shè)定默認(rèn)值為2,但也可以在函數(shù)調(diào)用時(shí)傳入其他值:

>>> int2('1000000', base=10)
1000000

最后,創(chuàng)建偏函數(shù)時(shí),實(shí)際上可以接收函數(shù)對(duì)象、args和*kw這3個(gè)參數(shù),當(dāng)傳入:
int2 = functools.partial(int, base=2)
實(shí)際上固定了int()函數(shù)的關(guān)鍵字參數(shù)base,也就是:int2('10010')
相當(dāng)于:

kw = { 'base': 2 }
int('10010', **kw)

當(dāng)傳入:
max2 = functools.partial(max, 10)
實(shí)際上會(huì)把10作為*args的一部分自動(dòng)加到左邊,也就是:
max2(5, 6, 7)
相當(dāng)于:

args = (10, 5, 6, 7)
max(*args)

結(jié)果為10。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容