Python 偏函數

  int 函數能夠把字符串轉化爲整數,當僅僅傳入字符串時,int()函數默認按照十進制轉換:python

print  int("12345")    #12345

  int函數還提供額外的base參數,默認值爲10,若是傳入base參數,能夠作N進制的轉換函數

print  int("12345",base=8)  #5349
print int("12345",16)   #74565

 假設要轉換大量的二進制字符串,每次都傳入int(x, base=2)很是麻煩,因而,咱們想到,能夠定義一個int2()的函數,默認把base=2傳進去spa

def  int2(x,base=2):
    return  int(x,base)

print  int2("10000000")   #128
print  int2("1010101")     #85

經過設定參數的默認值,能夠下降函數調用的難度。而偏函數也能夠作到這一點,functools模塊提供了不少有用的功能,其中一個就是偏函數
functools.partial就是幫助咱們建立一個偏函數的,不須要咱們本身定義int2(),能夠直接使用下面的代碼建立一個新的函數int2:對象

import  functools
int2=functools.partial(int,base=2)

print  int2("10000000")   #128
print  int2("1010101")     #85

 functools.partial的做用就是,把一個函數的某些參數給固定住(也就是設置默認值),返回一個新的函數,調用這個新函數會更簡單。blog

上面的新的int2函數,僅僅是把base參數從新設定默認值爲2,但也能夠在函數調用時傳入其餘值:字符串

print  int2('1000000', base=10)  #1000000

當建立偏函數時,能夠接受函數對象、*args、**kw這三個參數class

 int2 = functools.partial(int, base=2) 實際上固定了int函數的關鍵字參數base,也就是import

 int2("10010") 至關於:
 kw={base:2}
 int{'10010',**kw}
二進制

當傳入:im

max2=functools.partial(max,2)

實際上會把10做爲*args的一部分自動加到左邊,也就是:
 max2(5,6,7)
 至關於
 args=(10,5,6,7)
 max(*args)

 

 轉自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143184474383175eeea92a8b0439fab7b392a8a32f8fa000

相關文章
相關標籤/搜索