我想用它來減少我的一個函數中的參數數。問題是:一個或多個可能是函數本身。這就是我的意思:functools.partialkwargsfrom functools import partialdef B(alpha, x, y): return alpha(x)*ydef alpha(x): return x+1g = partial(B, alpha=alpha, y=2)print(g(5))這將引發錯誤:類型錯誤:B() 為參數“alpha”獲取了多個值是否可以按照提供的參數處理函數?如果沒有,是否有解決方法或比?partialpartial
1 回答

陪伴而非守候
TA貢獻1757條經驗 獲得超8個贊
partial本身不知道應該僅僅因為您為 指定了關鍵字參數,就應該將給定的位置參數分配給 。如果要成為特定函數,請將該函數作為位置參數傳遞給 。xalphaalphapartial
>>> g = partial(B, alpha, y=2)
>>> g(5)
12
g等效于
def g(x):
return alpha(x) * 2 # == (x + 1) * 2
或者,您可以使用 的原始定義 ,但請確保也作為關鍵字參數傳遞,避免任何其他位置參數。g5
>>> g = partial(B, alpha=alpha, y=2)
>>> g(x=5)
12
這是有效的,因為在 和 之間,您已經為所有必需參數提供了關鍵字參數,從而無需任何位置參數。gpartial
添加回答
舉報
0/150
提交
取消