将参数发送到用户定义的函数?

时间:2016-07-22 13:59:36

标签: python python-3.x scipy

我们定义用户定义的函数如下。

def testfun(x):
    return( x[0]*a+x[1]*b)

调用该函数:

sol =  optimize.root(testfun, [0, 0], method = 'lm')

我们如何在调用函数时传递ab

1 个答案:

答案 0 :(得分:4)

对于此问题,optimize.root有一个args输入,它接受一个值元组作为附加输入传递给目标函数:

def testfun(x, a, b):
    return ([x[0] * a + x[1] * b])

# Specify values for a and b
a = 1
b = 2

sol = optimize.root(testfun, [0, 0], method='lm', args=(a, b))

更一般地说,您可以使用lambda函数为任何函数提供额外的输入

# Create a lambda function which passes the input provided by optimize.root and adds 
# two more inputs: a and b
func = lambda x: testfun(x, a, b)

# Pass this lambda function to optimize.root
sol = optimize.root(func, [0, 0], method='lm')