函数的Python变量参数

时间:2018-08-22 09:56:10

标签: python python-3.x variadic

我正在学习Python,并遇到了各种各样的争论。我不明白以下代码产生的输出:

_list = [11,2,3]
def print_list(*args):
    for value in args:
        a = value * 10
        print(a)
print_list(_list)

运行程序时,我得到:

[11, 2, 3, 11, 2, 3, 11, 2, 3, 11, 2, 3, 11, 2, 3, 11, 2, 3, 11, 2, 3, 11, 2, 3, 11, 2, 3, 11, 2, 3]

据我了解,value持有_list数组中的一个元素,将其乘以10会得到列表[110, 20, 30]。输出为何不同?

2 个答案:

答案 0 :(得分:5)

由于函数的参数为​​*args(带有*),因此您的函数实际上接收到传入参数的元组,因此args变成([11,2,3],)(一个包含您传入的列表的元组。

您的函数遍历该元组中的值,得到value=[11,2,3]。将列表乘以10可获得的列表长10倍。

答案 1 :(得分:0)

您可能正在寻找扩展列表print_list(*_list),该列表将输入列表的每个元素作为函数参数传递,因此输出为 110 20 30

如果您将列表设为numpy.array(_list) * 10,那么乘法也将起作用。