擅长:python、mysql、java
<p>因为这两个代码片段做了两件本质上不同的事情。<code>var + [4]</code>创建一个由<code>var</code>列表的内容组成的新列表,并添加{<cd3>},然后将这个新列表分配给<code>var</code>。<code>var.append(4)</code>另一方面,将数字4追加到现有列表中。在</p>
<p>您的问题是<code>var=[0]</code>只计算一次,然后重用,因为您的<code>append</code>更改了变量本身,您将看到对以后调用的影响。另一个代码只向局部变量分配一个新对象,这在以后不会有效果。在</p>
<p>通常不使用可修改的默认值,而是写下:</p>
<pre><code>def foo(var=None):
if var is None: var = [0]
</code></pre>
<p>如果需要记住以前调用的数据,请将整个函数放入一个类中。在</p>