如何使用参数列表调用带有多个参数的函数

时间:2016-03-30 20:12:12

标签: python python-2.7 abstract-syntax-tree

我有一个

的功能
def abc(a,b,c):
    #do something
    pass

我想用列表而不是abc(a,b,c)来称呼它,例如:

abc([1,2,3])

我无法更改abc的定义。

用例:

我正在尝试使用ast

编写自己的eval

在实现ast.Call时,我希望能够使用多个参数调用我的函数。

但是,如果node的类型为ast.Call,则参数将以列表的形式传递。

E.g:

>> exp = ast.parse('abc(1,2)', mode='eval').body
>> exp
# <_ast.Call at 0x2ab3c5bef7d0>
>> exp.args
#[<_ast.Num at 0x2ab3c5bef850>, <_ast.Num at 0x2ab3c5bef890>]

问题是,当我返回给我的args是一个列表时,我无法理解如何调用名称为abc的函数。

我会尝试调用库函数,例如minmaxlenstr以及我自己的函数,例如contains,{{1}我无法理解的是,如何将参数列表传递给带有多个参数的函数?

1 个答案:

答案 0 :(得分:1)

您可以通过使用*

解压缩列表,执行以下操作
>>> def abc(a,b,c): print(a,b,c)
...
>>> abc(1,2,3)
1 2 3
>>> abc(*[1,2,3])
1 2 3