我正在尝试返回在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__
的类的实例也可以作为可调用对象传递。