擅长:python、mysql、java
<p>这不起作用的原因是这里有两个不同的变量。当你说</p>
<pre><code>data = []
</code></pre>
<p>您正在将<em>参数</em><code>data</code>更改为新的空列表,但您根本没有更改全局变量<code>data</code>。在</p>
<p>奇怪的是,尽管这里有两个变量,但每个变量的值实际上是对包含列表元素的存储的引用。你可以通过说</p>
^{pr2}$
<p>这将导致全局<code>data</code>为空。在</p>
<p>示例:</p>
<pre><code>>>> data = [1,2,3]
>>> def something(data):
... print data
... data[:] = []
...
>>> print data
[1, 2, 3]
>>> something(data)
[1, 2, 3]
>>> data
[]
</code></pre>
<p>这与在Python中,所有东西都是通过值传递的,但是对象的“值”是对对象的引用。在</p>
<p>至于你以后是否应该“清空”列表并“重用”变量用于其他用途,这听起来有点奇怪,但我想这取决于你想做什么。在</p>