将Python函数参数存储为变量以便稍后调用

时间:2013-07-08 17:32:07

标签: python django parameters

我有一个函数,根据不同的情况,我正在改变发送给我返回的结果的函数的参数。我想在方法中间确定参数,并且在函数的底部只有一个返回调用。请注意,这不是我的代码的样子,它只是一个例子。我正在使用Django,如果那是相关的。

if x:
    return func(param1, param2, param3)
elif y:
    return func(param4, param5, param6)
elif z:
    return func(param7, param8, param9)

我想要阅读

if x:
    parameters = (param1, param2, param3)
elif y:
    parameters = (param4, param5, param6)
elif z:
    parameters = (param7, param8, param9)
return func(parameters)

感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

只做

return func(*parameters)

它解压缩参数并将其传递给func。阅读此内容的Python Docs条目。

例如 -

>>> def test(a, b, c):
        print a, b, c


>>> testList = [2, 3, 4]
>>> test(*testList)
2 3 4

您的代码现在会读取 -

if x:
    parameters = (param1, param2, param3)
elif y:
    parameters = (param4, param5, param6)
elif z:
    parameters = (param7, param8, param9)
return func(*parameters)

答案 1 :(得分:4)

使用*unpack the parameter tuple

func(*parameters)

<强>演示:

def func(x,y,z):
     print x,y,z
>>> params = (1,2,3)
>>> func(*params)
1 2 3
>>> params = (4,5,6)
>>> func(*params)
4 5 6

答案 2 :(得分:1)

有一种pythonic方法,这有点漂亮:

paramDictionary = { x : (param 1, param 2, param 3), y : (...), z:(...) }
return func( *paramDictionary[ indicator ] )

这往往是python中更整洁的代码。您仍然使用*来解压缩变量,但是您不需要使用if语句的漫无边际的行!

答案 3 :(得分:0)

你能不能简单地做到

return func(parameters[0], parameters[1], parameters[2])