def add_unlimited(*args):
sum = 0
for n in args:
sum += n
print(sum)
numbers = [23, 45, 23, 56]
add_unlimited(23, 45, 23, 56)
def add_unlimited(*args)
接受任意数量的参数。在函数内部,参数以list
的形式访问,命名为args
。
注意add_unlimited([23, 45, 23, 56])
使用一个参数调用函数。这个参数恰好是一个列表,[23, 45, 23, 56]
。在函数内部,这将导致args = [[23, 45, 23, 56]]
。如果每个参数都不是整数,则函数内的其余代码将无法工作,这就是为什么会出现错误。
您可以使用解包操作符*
将单个列表作为多个参数传递:add_unlimited(*[23, 45, 23, 56])
相当于add_unlimited(23, 45, 23, 56)
请注意,与Go等其他静态语言不同,*args
没有任何类型限制。您甚至可以将整数列表的元组和普通字符串混合在一起。这相当于像*args: Any
那样对其进行类型注释——表示每个参数可以是任何类型。
然而,在这种情况下,看起来你的函数依赖于每个参数是一个数字。因此,我将键入注释,如*args: Number
,以提示调用者传入的每个参数应该是一个有效的数字。
用法如下:
from numbers import Number
def add_unlimited(*args: Number):
sum = 0
for n in args:
sum += n
print(sum)
numbers = [23, 45, 23, 56]
add_unlimited(*numbers)
sum=0
for n in args:
sum = 0 + [23, 45, 23, 56]
你不能添加一个列表和零。
你可能想要像
这样的东西for x in args:
for n in x:
sum += n