【问题标题】:How to call a function that takes multiple arguments with a list of arguments [duplicate]如何调用带有参数列表的多个参数的函数[重复]
【发布时间】: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 的函数。

我会尝试调用库函数,如 minmaxlenstr 和我自己的函数,如 containsget_item 等。我不明白的是,如何如何将参数列表传递给接受多个参数的函数?

【问题讨论】:

  • 我不知道拆包这个词。谢谢。
  • 是的,如果您缺少术语,有时可能很难找到相关信息。在 python 文档中有更多关于此的内容:docs.python.org/3/tutorial/…。我建议阅读整页 :)

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


【解决方案1】:

您可以通过使用* 解压缩列表来执行此操作

>>> def abc(a,b,c): print(a,b,c)
...
>>> abc(1,2,3)
1 2 3
>>> abc(*[1,2,3])
1 2 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2010-10-23
    • 2012-10-11
    • 2013-03-02
    • 1970-01-01
    • 2017-12-25
    • 2013-08-19
    相关资源
    最近更新 更多