【问题标题】:Python Variable Argument to functions函数的 Python 变量参数
【发布时间】:2018-08-22 09:56:10
【问题描述】:

我正在学习 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]。为什么输出不同?

【问题讨论】:

  • 试试print(args),我想你会明白为什么。 args 在您的情况下是 ([11,2,3],) - 长度为 1 的列表元组。

标签: python python-3.x variadic


【解决方案1】:

因为你的函数的参数是*args(带有*),你的函数实际上接收传入参数的元组,所以args变成([11,2,3],)(一个包含你传入的列表的元组)。

您的函数遍历该元组中的值,给出value=[11,2,3]。当你将一个列表乘以 10 时,你会得到一个长 10 倍的列表。

【讨论】:

  • 知道了,谢谢...来自 C++ 背景,我误认为 *args 具有类似指针的功能。现在将学习python中的元组。
【解决方案2】:

您可能要查找的是扩展列表print_list(*_list),它将输入列表的每个元素作为函数参数传递,因此输出为 110 20 30.

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多