从许多函数中创建Python中单变量的函数

时间:2014-04-28 22:13:10

标签: python function

我的问题是由scipy.optimize.minimize()函数激发的。

我有一个目标函数f(x, const1, const2),我希望x最小化,const1const2的值在f内保持不变。< / p>

如何声明g(x) = f(x, const1, const2)以便我可以将g传递给minimize()函数?

我目前正在使用全局变量,但解决方案变得非常混乱。

2 个答案:

答案 0 :(得分:3)

最快/最简单的方法可能是使用python partial函数。具体来说,如果你传递一系列args和kwargs,它将返回一个新函数,其中这些输入被冻结。例如:

from functools import partial
g = partial(f, const1=const1, const2=const2)

g(x)将等同于:f(x, const1=const1, const2=const2)

您也可以使用位置参数而不是kwargs执行与上面相同的操作。有关更完整的治疗,请参阅the docs

可以这样做lambda函数就像在testuser的答案中那样,但是你必须处理额外的开销,这有点违反了python&#39 ; s zen:

  

应该有一个 - 最好只有一个 - 显而易见的方法。

答案 1 :(得分:1)

g = lambda(x): f(x, const1, const2)