擅长:python、mysql、java
<p>你的假设是错误的。实际上,<code>WILL PRINT 0</code>行将打印<code>1</code>。你知道吗</p>
<p>请注意,如果<code>test</code>是一个列表,而<code>pathgen</code>要修改它(例如,通过附加一个元素),情况会有所不同:</p>
<pre><code>class check:
def pathgen(self,test):
test.append(1)
print test
def assign(self):
test=[]
self.pathgen(test)
print test
check().assign()
</code></pre>
<p>实际上,这会打印<code>[1]</code>两次。你知道吗</p>
<p>这可以通过在<code>pathgen</code>中复制<code>test</code>来解决:</p>
<pre><code>class check:
def pathgen(self,test):
test=test[:] # make a shallow copy of `test'
test.append(1)
print test
def assign(self):
test=[]
self.pathgen(test)
print test
check().assign()
</code></pre>