根据现有函数中的一个免费参数创建一个可调用函数,其中python中包含多个参数

Dav*_*eli 4 python

以下是matlab中的代码:

costFunc = @(p) nnCostFunction(p, input_layer_size, hidden_layer_size, ...
                               num_labels, X, y, lmbd);
Run Code Online (Sandbox Code Playgroud)

它采用函数nnCostFunction,为它提供除p以外的所有参数,并将其转换为依赖于p的可调用对象。

也就是说,您可以调用完整功能:

result = nnCostFunction(p, input_layer_size, hidden_layer_size,num_labels, X, y, lmbd)
Run Code Online (Sandbox Code Playgroud)

或调用新函数:

result = costFunction(p)
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在Python中做类似的事情吗?

MrG*_*eek 5

您可以使用functools.partial

from functools import partial

costFunc = partial(nnCostFunction, input_layer_size, hidden_layer_size, ...
                           num_labels, X, y, lmbd)
Run Code Online (Sandbox Code Playgroud)

然后用以下命令调用它p

costFunc(p)
Run Code Online (Sandbox Code Playgroud)

但是请注意,p它将作为最后一个参数传递,如果您希望它是第一个参数,则应将其包装在另一个函数中:

def costFunc(p):
    return nnCostFunction(p, input_layer_size, hidden_layer_size, ...
                               num_labels, X, y, lmbd)
Run Code Online (Sandbox Code Playgroud)