偏函數名 = partial(func, *args, **kwargs)
其中,func 指的是要封裝的原函數,*args 和 **kwargs 分別用於接收無關鍵字實參和關鍵字實參。下面舉幾個例子,讓大家可以直觀感受一下偏函數的用法和功能。有關 *args 和 **kwargs 作為函數形參更詳細的解釋,可閱讀《Python函數可變引數(*args, **kwargs)》一節。
from functools import partial #定義個原函數 def display(name,age): print("name:",name,"age:",age) #定義偏函數,其封裝了 display() 函數,並為 name 引數設定了預設引數 GaryFun = partial(display,name = 'Gary') #由於 name 引數已經有預設值,因此呼叫偏函數時,可以不指定 GaryFun(age = 13)執行結果為:
name: Gary age: 13
注意,此程式的第 8 行程式碼中,必須採用關鍵字引數的形式給 age 形參傳參,因為如果以無關鍵字引數的方式,該實參將試圖傳遞給 name 形參,Python直譯器會報 TypeError 錯誤。from functools import partial def mod( n, m ): return n % m #定義偏函數,並設定引數 n 對應的實參值為 100 mod_by_100 = partial( mod, 100 ) print(mod( 100, 7 )) print(mod_by_100( 7 ))執行結果為:
2
2