擅长:python、mysql、java
<p>简而言之:因为<code>+</code>(由<code>sum</code>使用)可以被重新定义,所以如果您不提供一个iterable的数值,您需要某种方式来提供一个适合类型的起始值。你知道吗</p>
<hr/>
<p>第二个参数用作求和的“起点”。这基本上是求和的起点:</p>
<pre><code>>>> sum([1,2,3])
6
>>> sum([1,2,3], 0)
6
>>> sum([1,2,3], 2)
8
</code></pre>
<p>它的默认值是0,如果要求和的序列不是数字,则会出现问题,因为没有定义<code>0 + (1, 2)</code>。相反,您需要提供一个值,以便<em>可以</em>添加到序列的元素中;虽然0是数字加法的标识,<code>sum</code>不知道元组串联的等效值是什么,您必须直接提供它。你知道吗</p>
<pre><code>>>> sum(((1,2), ('a', 'b')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
>>> sum(((1,2), ('a', 'b')), ())
(1, 2, 'a', 'b')
>>> sum(((1,2), ('a', 'b')), (True,))
(True, 1, 2, 'a', 'b')
</code></pre>