[英]Python tuples and sum() inquiry
因此,根据Think Python教程,我继续进行了元组部分的讨论,我想问的是为什么这样做有效:
def sumall(*args):
return sum(args)
print sumall(1, 2, 3, 4)
和这个
sum(1,2,3,4)
不是吗
因为args
是一个元组 ,所以它是一个参数。 以下功能与您的功能相同并起作用:
sum((1,2,3,4))
没有多余的括号,您将使用四个单独的参数调用sum()
,因此第一个参数不是4个整数的元组,而只是一个整数。 那是行不通的,因为sum()
希望第一个参数改为序列。 可选的第二个参数可用于提供不同的起始值(默认值为0),这意味着sum()
最多接受2个参数。
内置sum
和sumall
之间有细微的差别。 sum
接收一个可迭代的(通常为list
或tuple
)参数(总是一个参数!),而sumall
接收与您传递的参数一样多的参数。
这是为什么? 因为您在函数签名中添加了星号,所以内置总和的定义如下:
def sum(args): # note: no asterisk here
result = 0
for val in args:
result += val
return result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.