【发布时间】:2016-03-30 20:12:12
【问题描述】:
我有一个功能是
def abc(a,b,c):
#do something
pass
我想用列表而不是 abc(a,b,c) 来调用它,例如:
abc([1,2,3])
我无法更改abc 的定义。
用例:
我正在尝试使用ast 库编写自己的评估
在实现ast.Call 时,我希望能够使用多个参数调用我的函数。
但是,如果节点的类型为ast.Call,则参数以列表的形式传递。
例如:
>> exp = ast.parse('abc(1,2)', mode='eval').body
>> exp
# <_ast.Call at 0x2ab3c5bef7d0>
>> exp.args
#[<_ast.Num at 0x2ab3c5bef850>, <_ast.Num at 0x2ab3c5bef890>]
问题是,当返回给我的参数是一个列表时,我无法理解如何调用名称为 abc 的函数。
我会尝试调用库函数,如 min、max、len、str 和我自己的函数,如 contains、get_item 等。我不明白的是,如何如何将参数列表传递给接受多个参数的函数?
【问题讨论】:
-
我不知道拆包这个词。谢谢。
-
是的,如果您缺少术语,有时可能很难找到相关信息。在 python 文档中有更多关于此的内容:docs.python.org/3/tutorial/…。我建议阅读整页 :)
标签: python python-2.7 abstract-syntax-tree