- Python 3.6從入門到精通(視頻教學版)
- 王英英
- 482字
- 2019-12-06 14:20:16
6.11 偏函數
Python的functools模塊提供了很多有用的功能,其中一個就是偏函數(Partial function)。注意,這里的偏函數和數學意義上的偏函數不一樣。
通過設置參數的默認值,可以降低函數調用的難度,偏函數也可以做到這一點。
例如:
int()函數可以把字符串轉換為整數,當僅傳入字符串時,int()函數默認按十進制轉換:
>>> int('2888') 2888
int()函數還提供了base參數,默認值為10。如果傳入base參數,就可以進行N進制的轉換:
>>> int('123456', base=8) 42798 >>> int('123456', 16) #base也可以省略,直接傳入base的值 1193046
假設要轉換大量的二進制字符串,而每次都傳入int(x, base=2)就會非常麻煩,這里可以定義一個int2()函數,默認把base=2傳進去:

這樣,轉換二進制就非常方便了:
>>> int2('1001000') 72 >>> int2('1000011') 67 >>> int2('1001110') 78
functools.partial就是幫助用戶創建偏函數的,不需要再自定義int2()函數,可以直接使用下面的代碼創建一個新的函數int2:
>>> from functools import partial >>> int2 = partial(int, base=2) >>> int2('1001000') 72 >>> int2('1000011') 67 >>> int2('1001110') 78
可見,functools.partial的作用就是把一個函數的某些參數固定住(設置默認值),返回一個新函數,調用這個新函數會更簡單。
注意 int2函數僅僅是把base參數的默認值重新設置為2,也可以在函數調用時傳入其他值:
>>> int2('1000000', base=10) 1000000
當函數的參數數量太多、需要簡化時,使用functools.partial可以創建一個新函數,這個新函數可以固定住原函數的部分參數,從而使調用更簡單。