为什么sum(1,2)
会导致TypeError: 'int' object is not iterable
,sum(1,2,3)
导致TypeError: sum expected at most 2 arguments, got 3
,但是如果我添加更多括号则可以?
sum((1,2,3))
同时,max(1,2,3)
和max((1,2,3))
都可以。
答案 0 :(得分:3)
这是因为函数sum()内置的python接受了iterable的参数和迭代中起始位置的第二个参数。 sum(iterable [,start])
这就是添加3个参数会给您带来错误的原因。您可以在文档中阅读更多内容:https://docs.python.org/2/library/functions.html#sum
另一方面,max()接受不同的参数,max(iterable [,key])和 在https://docs.python.org/2/library/functions.html#max中找到的max(arg1,arg2,* args [,key]) 它可以接受可迭代或一堆数字作为参数并返回最大值
答案 1 :(得分:1)
sum
需要一个必需的参数,该参数需要是任何数字序列,即数字的列表或元组(但不是字符串)。
如果给定结果,则会将可选的第二个参数添加到结果中。
>>> sum((1, 2, 3))
6
>>> sum([1, 2, 3])
6
>>> sum((1, 2, 3), 4)
10
>>> sum([1, 2, 3], 4)
10
答案 2 :(得分:0)
"从左到右开始汇总和可迭代的项目并返回总数。"
只是为了证明它并且可能弄乱你的理智:
>>> type ((1))
<type 'int'>
>>> sum ((1),2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> type ((1,))
<type 'tuple'>
>>> sum ((1,),2)
3
>>> type ([1])
<type 'list'>
>>> sum ([1],2)
3
>>> type ([1,])
<type 'list'>
>>> sum ([1,],2)
3
>>>