python - 在 *args 中传递一个元组

标签 python eval args

我想将元组(或可能是列表)作为值(参数)序列传递给函数。然后应该将元组作为参数解压到 *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/

相关文章:

python - 在 Python 中找到最早的出现

python - 棕褐色效果opencv python中的错误

python - csv 到特定列表中的字典(当重复键时添加值)

Python 命令参数

python - 如果我有多个最小数字并且想要两个索引,如何在 python 中找到数组中最小数字的索引?

eval - Tcl:如何评估语句以在调用时填写默认参数

javascript - 重新接线: How is it possible for this function to execute without returning the specified return value

python - 在 Python 中使用 eval 或 exec 设置全局变量

c++ - 在参数 C++ 中传递多个参数而不使用 va_list

python - *args 和 **kwargs 的使用