我正在编写程序,在循环存储在变量中的某些特定数据后,我不再需要它。但是,我想重用该变量以便稍后在程序中使用。我不确定这是否是最佳方式,但似乎摆脱了不再需要的数据,重用变量可以使代码更清晰,使用更少的资源。
示例:
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 = []
我已尝试重置数据变量,如上例所示,但它似乎无法正常工作。我错过了为什么这不可能,或者我做错了什么?
答案 0 :(得分:2)
函数的第一行应为global data
,表示您在函数中使用的数据变量是您已全局声明的数据变量。
答案 1 :(得分: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中一切都是按值传递,但对象的“值”是对象的引用这一想法有关。
至于你是否“清空”列表和“重用”变量用于以后的其他用途,这听起来有点奇怪,但我想这取决于你想要做什么。