<p>这是因为<a href="https://docs.python.org/3/library/functions.html#sum" rel="nofollow noreferrer"><em>^{<cd1>}</em> uses start value as ^{<cd2>}.</a></p>
<pre>
>>> help(sum)
Help on built-in function sum in module builtins:
sum(iterable, /, <b>start=0</b>)
Return the sum of a <b>'start' value (default: 0) plus an iterable of numbers</b>
When the iterable is empty, return the start value.
This function is intended specifically for use with numeric values and may reject non-numeric types.
</pre>
<p>例如,<em><code>sum([1, 2])</code></em>是<code>0 + 1 + 2</code></p>
<pre><code>>>> sum([1, 2])
3
</code></pre>
<p><em><code>sum([1, 2], start=7)</code></em>是<code>7 + 1 + 2</code></p>
<pre><code>>>> sum([1, 2], start=7)
10
</code></pre>
<p>因此,要解决这个问题,请使用一个item(<code>relativedelta</code>对象)作为<code>start</code>参数,并将其他所有内容保留在iterable中</p>
<pre><code>from datetime import datetime
from dateutil.relativedelta import relativedelta
date1 = datetime(2018, 4, 9).date()
date2 = datetime(2019, 8, 18).date()
date3 = datetime(2014, 2, 1).date()
date4 = datetime(2018, 12, 30).date()
myList = []
rdelta1 = relativedelta(date2, date1)
rdelta2 = relativedelta(date4, date3)
myList.append(rdelta2)
print(sum(myList, rdelta1)) # so both start and items in `MyList` are `relativedelta` types.
</code></pre>