python函式式程式設計之偏函式

2021-08-01 08:42:22 字數 1275 閱讀 6299

偏函式:partial function。在python中偏函式的作用是把函式的某些引數給固定住了(設定默值),返回乙個新的函式,呼叫這個新的函式會更簡單。

int()函式可以把字串轉換為整數,當僅傳入字串時,int()函式預設按十進位制進行轉換:

>>> int('12345')

12345

但是int()函式還提供額外的base引數,預設值是10,如果傳入base引數,就可以做n進製的轉換:

>>> int('12345', base=8)

5349

>>> int('12345', 16)

74565

假設要轉換大量的二進位制字串,每次都傳入int(x,base=2)非常麻煩,我們可以定義乙個int2()函式,預設把base=2傳進去:

def int2(x, base=2):

return int(x, base)

functools.partial中已經建立乙個偏函式:

>>> import functools

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

>>> int2('1000000')

64>>> int2('1010101')

85

注意:建立的int2()函式僅僅把base引數重新設定預設值為2,但也可以在函式呼叫時傳入其他值:

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

1000000

建立偏函式時,實際上可以接受函式物件,*args和**kw這三個引數:

int2 = functools.partial(int, base=2)
實際上是固定了int()函式的桿件引數base,即int2('10010');相當於kw=   int('10010',**kw).

當傳入:

max2 = functools.partial(max, 10)

實際上是吧10作為*args的一部分自動加搭配左邊,即max2(5,6,7),相當於:args=(10,5,6,7)  max(*args),結果是10。

總結:當函式的引數個數太多,需要簡化的時候,使用functools.partial可以建立乙個新的函式,這個新的函式可以固定住原函式的部分引數,從而在呼叫是更簡單。

python函式式程式設計 高階函式 偏函式

三大特性 immutable data不可變資料 first class functions函式像變數一樣使用 尾遞迴優化 每次遞迴都重用stack 好處 parallelization並行 lazy evaluation惰性求值 determinism 確定性 函式式程式設計 map reduce...

函式式程式設計 偏函式

如下 coding utf 8 print int 12345 print int 12345 base 8 print int 12345 16 def int2 x,base 2 return int x,base print int2 1000000 print int2 1010101 im...

Python函式式程式設計之reduce函式

reduce f,itr reducer 先將itr 迭代器 裡面的前兩個值傳遞給函式 f 計算出結果,然後再同第三個值通過 f 計算出結果。一直迭代,直到沒有其他值為止。譬如 reducer f,v1,v2,v3,v4 轉化後的方程是 f f f v1,v2 v3 v4 高階函式 reducer ...