我正在尝试返回在scipy根查找函数(scipy.optimize.root)中获得的多个值。

例如:

B = 1
def testfun(x, B):
    B = x + 7
    return B**2 + 9/18 - x

y = scipy.optimize.root(testfun, 7, (B))


有什么方法可以在不使用全局变量的情况下返回B的值?

最佳答案

我不了解SciPy的任何具体信息,但是如何进行简单的关闭:

from scipy import optimize

def testfun_factory():
    params = {}
    def testfun(x, B):
        params['B'] = x + 7
        return params['B']**2 + 9/18 - x
    return params, testfun

params, testfun = testfun_factory()
y = optimize.root(testfun, 7, 1)
print(params['B'])


另外,带有__call__的类的实例也可以作为可调用对象传递。

09-07 08:42