为什么sum函数的参数需要在括号中?

时间:2016-02-07 07:11:51

标签: python

为什么sum(1,2)会导致TypeError: 'int' object is not iterablesum(1,2,3)导致TypeError: sum expected at most 2 arguments, got 3,但是如果我添加更多括号则可以?

sum((1,2,3))

同时,max(1,2,3)max((1,2,3))都可以。

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
>>>