清除函数外的数据(list/dict/tuple)

2024-10-04 03:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个程序,在循环处理存储在变量中的某些特定数据后,我不再需要它了。但是,我想重用这个变量以便以后在程序中使用。我不确定这是否是最好的方法,但似乎去掉不再需要的数据并重用变量可以保持代码的整洁和使用更少的资源。在

示例:

  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 = []

我尝试过像上面的例子那样重置数据变量,但似乎不起作用。我是不是忘了为什么这是不可能的,还是我做错了什么?在


Tags: andofto数据方法代码程序示例
2条回答

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

这不起作用的原因是这里有两个不同的变量。当你说

data = []

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

奇怪的是,尽管这里有两个变量,但每个变量的值实际上是对包含列表元素的存储的引用。你可以通过说

^{pr2}$

这将导致全局data为空。在

示例:

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

这与在Python中,所有东西都是通过值传递的,但是对象的“值”是对对象的引用。在

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

相关问题 更多 >