Python元组和sum()查询
因此,我根据Think Python教程继续讨论元组部分,我想问的是,为什么这样做有效:Python元组和sum()查询,python,python-2.7,tuples,Python,Python 2.7,Tuples,因此,我根据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个整数组成的元组,而是一个整数。这不起作用,因
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
接收一个iterable(通常为list
或tuple
)参数(始终为一个参数!),而sumall
接收的参数与传递的参数相同
为什么呢?由于您在函数签名中添加了星号,因此内置和的定义如下所示:
def sum(args): # note: no asterisk here
result = 0
for val in args:
result += val
return result
非常感谢Martin,在过去的几天里,我可以感觉到我的大脑在扩展,就像我在开始学习Python之前从来没有想过一样。