如果一個函數帶了一些參數,在大部分使用場景中,某個參數的值是固定的,那我們有兩種簡化辦法:
-
參數默認值
即在原始函數定義的地方,對應參數處設置paramx=default。但是有一點不好,如果paramx設置了默認值,這個參數之后的其他參數也要跟着設置默認值。
整體而言,對原有函數有改動。
-
偏函數
使用functools.partial(original_fuc,param1,param....)在原有函數基礎上生成一個偏函數。所謂偏函數,就是以原函數為基礎,將某個位置上的參數固定住(默認是從第一個參數固定),后續參數重新擴展傳遞給原函數,對外則是生成一個新函數。
比如:
def add(a,b): return a+b這是兩數相加的函數,現在我們要用一個函數,輸入一個參數,返回這個參數+5的結果。
參數默認值的方法可以這樣寫:
def add(a,b=5): return a+b但原函數本來就是兩數相加,即使現在可能一個參數+5的場景用的多,給被加數給個默認值5,也是很突兀的寫法。
我們也可以新寫一個函數:
def add5(a): return a+5這樣新創建一個函數,倒也沒什么,但是對原有add函數復用不高。
使用偏函數可以這樣寫:
import functools add5 = functools.partial(add, b=5) #test add5 ret = add5(10) print(ret)通過partial中b=5,將參數b的值固定下來。
