将任意数量的参数从列表传递到函数?

时间:2019-04-01 08:25:43

标签: python-3.x

我有一个函数,需要一个输入,然后是一个* arg,其中包含两个元素的元组序列。我还有一个SQL命令,该命令根据数据库中的内容生成此类元组的列表。一切都很好,但是我不知道如何将这些元组传递给函数。

我尝试将代码汇编为字符串,然后使用exec()执行它,尽管如此,它还是草率的,但是甚至不起作用,因为该函数中的return()值(包含我需要的输出)被忽略exec()。我尝试过eval()无效,因为被调用的函数具有输入和eval无法处理的其他实际代码;它只计算表达式。我认为我不能直接在元组列表上调用该函数,因为那将被视为一个参数,而不是(在此特定示例中)三个参数,不是吗?

如果有的话,我应该如何将该元组列表传递给函数?

TupleList = [('a','b'),('c','d'),('e','f')]
Func(Argument1, *Args)

我想打电话给

Func('ConstantValue',('a','b'),('c','d'),('e','f'))

同时仍保留Func()的return()吗?

1 个答案:

答案 0 :(得分:0)

def foo(arg1, *args):
    print(arg1)
    for arg in args:
        print(arg)

spam = [('a', 'b'), ('c', 'd'), ('e', 'f')]

foo('ConstantValue', *spam)

# or which yield same result
foo('ConstantValue', ('a', 'b'), ('c', 'd'), ('e', 'f'))

输出

ConstantValue
('a', 'b')
('c', 'd')
('e', 'f')
ConstantValue
('a', 'b')
('c', 'd')
('e', 'f')
>>>