我必须编写一个简单的函数,该函数需要可变数量的参数并打印总和,类似于(忽略错误检查)的简单方法:
def add(*params):
sum = 0
for num in params:
sum += num
print(sum)
我必须调用脚本并为其提供参数,然后该参数将在函数中使用。我得到这些参数是这样的:
import sys
sys.argv[1:]
但这是一个数组,将其发送到add
仅意味着传递一个作为列表的参数。我是Python的新手,所以也许所有这些听起来都是愚蠢的,但是有什么方法可以正确地将这些参数传递给函数吗?
答案 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:])