補充:partial方法
python 中提供一種用於對函式固定屬性的函式(與數學上的偏函式不一樣)
# 通常會返回10進製每次都得新增引數比較麻煩, functools提供了partial的方法int('12345') # print 12345
# 使用引數 返回 8進製
int('11111', 8) # print 4681
import functoolsfoo = functools.partial(int, base=8)
foo('11111') # print 4681
通過這種方法生成乙個固定引數的新函式
假設要轉換大量的二進位制字串,每次都傳入int(x, base=2)非常麻煩,於是,我們想到,可以定義乙個int2()的函式,預設把base=2傳進去:
def int2(x, base=2):這樣,我們轉換二進位制就非常方便了:return int(x, base)
>>> int2('1000000')functools.partial就是幫助我們建立乙個偏函式的,不需要我們自己定義int2(),可以直接使用下面的**建立乙個新的函式int2:64>>> int2('1010101')
85
>>> import functools所以,簡單總結functools.partial的作用就是,把乙個函式的某些引數給固定住(也就是設定預設值),返回乙個新的函式,呼叫這個新函式會更簡單。>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64>>> int2('1010101')
85
注意到上面的新的int2函式,僅僅是把base引數重新設定預設值為2,但也可以在函式呼叫時傳入其他值:
>>> int2('1000000', base=10)最後,建立偏函式時,實際上可以接收函式物件、*args和**kwargs這3個引數,當傳入:1000000
int2 = functools.partial(int, base=2)實際上固定了int()函式的關鍵字引數base,也就是:
int2('10010')相當於:
kw =當傳入:int('10010', **kwargs)
max2 = functools.partial(max, 10)實際上會把10作為*args的一部分自動加到左邊,也就是:
max2(5, 6, 7)相當於:
args = (10, 5, 6, 7)max(*args)
functools模組中partial的使用
functools.partial func args 關鍵字 返回乙個新的部分物件 當被呼叫時,其行為類似於 使用位置引數 args 和關鍵字引數 關鍵字呼叫的 func args 如果提供了其他關鍵字引數,則它們會擴充套件和覆蓋 關鍵字。簡單說就是把乙個函式,和該函式所需傳的引數封裝到乙個cla...
Python中functools模組的常用函式解析
1.partial 首先是partial函式,它可以重新繫結函式的可選引數,生成乙個callable的partial物件 int 10 實際上等同於int 10 base 10 和int 10 10 10 int 10 2 實際上是int 10 base 2 的縮寫 2 from functools...
Python標準模組 functools
functools,用於高階函式 指那些作用於函式或者返回其它函式的函式,通常只要是可以被當做函式呼叫的物件就是這個模組的目標。在python 2.7 中具備如下方法,cmp to key,將乙個比較函式轉換關鍵字函式 partial,針對函式起作用,並且是部分的 reduce,與python內建的...