将列表传递给具有可变数量的args的函数

时间:2018-11-12 13:41:03

标签: python

我必须编写一个简单的函数,该函数需要可变数量的参数并打印总和,类似于(忽略错误检查)的简单方法:

def add(*params):
    sum = 0
    for num in params:
        sum += num
    print(sum)

我必须调用脚本并为其提供参数,然后该参数将在函数中使用。我得到这些参数是这样的:

import sys
sys.argv[1:]

但这是一个数组,将其发送到add仅意味着传递一个作为列表的参数。我是Python的新手,所以也许所有这些听起来都是愚蠢的,但是有什么方法可以正确地将这些参数传递给函数吗?

2 个答案:

答案 0 :(得分:2)

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

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

此外,请注意args[1:]包含字符串。首先使用

将这些字符串转换为数字
numbers = [float(x) for x in args[1:]]

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

在通过add调用*numbers之前。

没有add函数的简短版本:

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

答案 1 :(得分:1)

您应使用argument unpacking语法:

def add(*params):
    sum = 0
    for num in params:
        sum += num
    print(sum)

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

another Stack Overflow question涵盖了该主题