擅长:python、mysql、java
<p>在这种特殊情况下,这是因为<code>list</code>s是可变的。</p>
<p>因此,将它们放在<em>全局名称空间</em>中,或者甚至通过<em>函数</em>传递,意味着它们将被更改,因为Python保存对可变对象的引用,而不是其副本。</p>
<p>如果你用<code>tuple</code>尝试同样的方法,它将不起作用,因为它们是不可变的。</p>
<p>避免这种情况的方法是向函数提供列表的副本,而不是列表本身:</p>
<pre><code>func2(list[:])
</code></pre>
<p>同时,您可以使用默认参数来实现这一点,在这里您可以将默认参数指定为<code>[]</code>,如果您随后对其进行<code>.append()</code>操作,则该默认参数将永远保留该项,以供以后的所有调用使用(除非您以某种方式删除它)。</p>