Python内置sum函数中的start参数为什么存在?
在sum函数中,它的格式是sum(iterable[,start]),这个函数会把可迭代对象里的所有东西加起来,还会加上一个起始值。我在想,为什么这里需要一个起始值呢?这个值有什么特别的用处吗?
请不要再举例说明起始值是怎么用的。我只是想知道为什么这个值会出现在这个函数里。如果sum函数的格式只是sum(iterable),而且当可迭代对象为空时返回None,那一切都能正常工作。那么,为什么我们在这里需要起始值呢?
1 个回答
16
如果你要加起来的东西不是整数,比如小数或者其他类型的数据,你可能需要提供一个起始值,这样才能避免出错。
>>> from datetime import timedelta
>>> timedeltas = [timedelta(1), timedelta(2)]
>>> sum(timedeltas)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'datetime.timedelta'
>>> sum(timedeltas, timedelta())
datetime.timedelta(3)