2013-06-29 18 views
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 = [] 

我試圖這個重置數據變量如在上面的例子,但是它似乎沒有奏效。我錯過了爲什麼這是不可能的,或者我做錯了什麼?

+0

這是一個範圍界定問題。 –

回答

2

你的函數的第一行應該是global data,以表示您正在使用的功能中的數據變量是您全局聲明的一個。

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,一切都按值傳遞的想法做,但對象的「值」是對對象的引用。

至於你是否應該「空出」列表和「重用」變量用於其他用途後,這聽起來有點奇怪,但我想這取決於你想要做什麼。