我想将一个元组(或者一个列表)作为一系列值(参数)传递给一个函数。然后应该将元组作为参数解压缩到 *arg 中。
例如,这是明确的:
def func(*args):
for i in args:
print "i = ", i
func('a', 'b', 3, 'something')
但我想做的是:
tup = ('a1', 'a2', 4, 'something-else')
func(tup)
这应该与第一种情况类似。
我想我应该在这里使用 reprint 和 eval 但不确定具体如何。
我知道我可以在函数中传递元组,然后在函数体内解压它,但我的问题是如何在函数调用本身中解压它。
最佳答案
您可以在调用函数时直接使用 func(*tup)
解包元组。
>>> func(*tup)
i = a1
i = a2
i = 4
i = something-else
这有点相当于
func(tup[0], tup[1], tup[2], ...)
。如果函数需要多个单独的参数,同样也适用:>>> def func2(a, b, c, d):
... print(a, b, c, d)
...
>>> func2(*tup)
('a1', 'a2', 4, 'something-else')
见例如here 更深入的语法背景。
关于python - 在 *args 中传递一个元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46794115/