一.簡單介紹:
functools模塊用于高階函數(shù):作用于或返回其他函數(shù)的函數(shù)。一般而言,任何可調(diào)用對象都可以作為本模塊用途的函數(shù)來處理。
functools.partial返回的是一個可調(diào)用的partial對象,使用方法是partial(func,*args,**kw),func是必須要傳入的,而且至少需要一個args或是kw參數(shù)。
創(chuàng)建一個功能函數(shù),實現(xiàn)三個數(shù)的相加,如果其中的一個或是多個參數(shù)不變,那么可以使用partial,實例化一個傳入了add和12參數(shù)的對象,如上圖所示,傳入兩個參數(shù)后,得到三個數(shù)的和。
二.partial源碼分析:
1.__new__方法部分
class partial: """New function with partial application of the given arguments and keywords. """ ###__SLOTS__ 只允許類有此屬性,不能動態(tài)的添加其他的屬性 __slots__ = "func", "args", "keywords", "__dict__", "__weakref__" ###__new__方法生成實例對象 def __new__(*args, **keywords): ###實例化對象時傳入?yún)?shù)的限定,不能為空、參數(shù)的個數(shù)要大于等于2,這就解釋了至少需要一個或多個args或是kw,func是一個可調(diào)用的對象,是必須要傳入的 if not args: raise TypeError("descriptor '__new__' of partial needs an argument") if len(args) < 2: raise TypeError("type 'partial' takes at least one argument") cls, func, *args = args # args=(cls,func,*args) if not callable(func): raise TypeError("the first argument must be callable") ### 位置參數(shù)是以元組的形式傳入的 args = tuple(args)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。