python中偏函式

2022-06-23 23:15:16 字數 965 閱讀 6989

當一個函式有很多引數時,呼叫者就需要提供多個引數。如果減少引數個數,就可以簡化呼叫者的負擔。

比如,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)

這樣,我們轉換二進位制就非常方便了:

>>> int2('

1000000')

64>>> int2('

1010101')

85

functools.partial就是幫助我們建立一個偏函式的,不需要我們自己定義int2(),可以直接使用下面的**建立一個新的函式int2:

>>> import

functools

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

>>> int2('

1000000')

64>>> int2('

1010101')

85

所以,functools.partial可以把一個引數多的函式變成一個引數少的新函式,少的引數需要在建立時指定預設值,這樣,新函式呼叫的難度就降低了。

python3偏函式

python的functools模組提供了很多有用的功能,其中一個就是偏函式 partial function 。要注意,這裡的偏函式和數學意義上的偏函式不一樣。 通過設定引數的預設值,可以降低函式呼叫的難度。而偏函式也可以做到這一點。舉例如下 int 函式可以把字串轉換為整數,當僅傳入字串時,...

Python使用偏函式與類實現裝飾器

coding utf 8 author baoshan python對某個物件是否能通過裝飾器形式使用只有一個要求 decorator必須是...

Python中abc

import abc 指定metaclass屬性將類設定為抽象類,抽象類本身只是用來約束子類的,不能被例項化 class animal me...