我有一个像这样的函数包装器。
def funcWrapper(fn_ng, order=None, *args ):
def clsr(X):
if order is not None:
X = calc_poli_dsX(X, order)
return fn_ng(X, *args);
return clsr;
但是,如果我使用此功能如下:
mGrdnt = funcWrapper( gd.squared_error, dsX1, dy, order=None)
mGrdnt = funcWrapper( gd.squared_error, dsX1, dy)
我有错误
TypeError: funcWrapper() got multiple values for keyword argument 'order'
我的猜测是,如果我没有指定' order',funcWrapper将通过' dsX1'并且' dy'作为* arg传递,但事实证明它们不是。无论我指定一个可选参数,似乎' dsX1'并且' dy'所有人都进入了“订单”。命名为可选参数。
当可选参数是/或未指定时,如何创建一个可以将dsX1和dy传递给* arg的函数包装器?
答案 0 :(得分:1)
您只需修改通话:
arr = [dsX1, dy]
funcWrapper(gd.squared_error, None, *arr)
或者您可以这样做:
funcWrapper(gd.squared_error, [dsX1, dy])