传递一个列表以在python中使用可变数量的args运行

Pass a list to function with variable number of args in python

本问题已经有最佳答案,请猛点这里访问。

我必须编写一个简单的函数,它接受可变数量的参数并打印和,这很简单(忽略错误检查):

1
2
3
4
5
def add(*params):
    sum = 0
    for num in params:
        sum += num
    print(sum)

我必须调用脚本并给它提供参数,然后在函数中使用这些参数。我得到了这样的论据:

1
2
import sys
sys.argv[1:]

但这是一个数组,发送到add只意味着传递一个列表参数。我对python还不熟悉,所以可能所有这些听起来都很愚蠢,但是有没有办法将这些参数正确地传递给函数呢?


是的,只需使用定义函数时使用的相同*args语法解包列表。

1
2
my_list = [1,2,3]
result = add(*my_list)

另外,请注意,args[1:]包含字符串。将这些字符串首先转换为数字

1
numbers = [float(x) for x in args[1:]]

1
numbers = map(float, args[1:]) # lazy in Python 3

在用*numbers呼叫add之前。

不带add功能的短版:

1
result = sum(map(float, args[1:]))


您应该使用参数解包语法:

1
2
3
4
5
6
7
8
def add(*params):
    sum = 0
    for num in params:
        sum += num
    print(sum)

add(*[1,2,3])
add(*sys.argv[1:])

下面是另一个涉及主题的堆栈溢出问题