我试图返回在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的值?
答案 0 :(得分:1)
我不知道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__
的类的实例也可以作为可调用对象传递。