擅长:python、mysql、java
<p>您有一个可变值作为函数参数<code>l</code>的默认值。在Python中,这意味着当您调用<code>l.append(self)</code>时,您正在永久地修改默认参数。在</p>
<p>为了避免此问题,请在每次调用函数时将<code>l</code>设置为一个新列表,如果没有传入列表:</p>
<pre><code>def allChildren(self, l = None):
if l is None:
l = list()
l.append(self)
for child in self.children:
l = child.allChildren(l)
return l
</code></pre>
<p>这一现象在<a href="https://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument">this question</a>中有更详细的解释。在</p>