1

我正在编写一个程序,在遍历存储在变量中的一些特定数据之后,我不再需要它。但是,我想重用该变量以供稍后在程序中使用。我不确定这是否是最好的方法,但似乎摆脱不再需要的数据并重用变量将使代码更清洁并使用更少的资源。

例子:

  data = [#Lots and lots of data]

  def loopThroughdata(data):
     #here I loop through data and extract what I need
     #Finally, I'd like to reset the data variable to empty
     data = []

我已经尝试过像上面的示例那样重置数据变量,但它似乎不起作用。我是否错过了为什么这是不可能的,或者我做错了什么?

4

2 回答 2

2

函数的第一行应该global data表明您在函数中使用的数据变量是您在全局声明的变量。

于 2013-06-29T00:49:55.947 回答
0

这不起作用的原因是您在这里有两个不同的变量。在函数内部,当你说

data = []

您正在将参数 data更改为一个新的空列表,但您根本没有更改全局变量data

奇怪的是,即使这里有两个变量,每个变量的值实际上都是对包含列表元素的存储的引用。您实际上可以通过说清空此存储空间

data[:] = []

这将产生使全局为data空的效果。

例子:

>>> data = [1,2,3]
>>> def something(data):
...     print data
...     data[:] = []
... 
>>> print data
[1, 2, 3]
>>> something(data)
[1, 2, 3]
>>> data
[]

这与在 Python 中,一切都是按值传递的想法有关,但对象的“值”是对该对象的引用。

至于以后是否应该“清空”列表和“重用”变量以供其他用途,这听起来有点奇怪,但我想这取决于你想要做什么。

于 2013-06-29T00:55:22.887 回答