2012-05-06 64 views
2

你能抓住沒有分配給變量的實例化對象嗎? 例如: -可以抓取未分配給變量的實例化對象嗎?

import time 
time.time() 

我怎麼能抓住我已經實例化對象調用的方法吧。 也許我可以得到所有實例化時間對象的列表,然後通過返回的某種類型的ID重新指派它們?

回答

5

在交互式解釋器的最後一個計算值保存爲_

>>> import time 
>>> time.time() 
1336296696.824 
>>> _ 
1336296696.824 
+0

很酷,我不知道。但假設上一次計算出的值已經是別的了,還有辦法保存它嗎?或者它是否立即收集垃圾? – Bentley4

+0

我不確定那個...... – jamylak

+3

是的,只有最後一個被保存。其他未引用的對象是垃圾收集。這是Python內存管理的基本原則。 – yak

3

這聞起來像一個壞試圖優化哪些不需要進行優化。

讓GC處理這樣一個對象 - 它可能會立即被刪除,因爲它的引用計數在創建後立即爲零。

這也意味着無法訪問未引用的對象。

+0

我想不出它的好用。但是我仍然想知道python用這個對象做什麼。這是一個很糟糕的問題嗎? 據我所知,每個對象都有一個唯一的id,它可能有可能是python有一個函數,它列出了自從python會話開始以來所有新創建的對象與他們的id。而且可能有另一個函數允許通過鍵入其id來返回對象。您可以將其重新分配給一個變量。 – Bentley4

5

沒有引用的對象根本不存在。 Python內存管理通過引用計數工作。只要對象沒有引用,它就會被銷燬。

1

假設你在談論REPL,IPython(我強烈建議)允許你訪問任何過去的計算結果。例如:

In [1]: 2 * 2 * 2 
Out[1]: 8 

In [2]: _ * 2 
Out[2]: 16 

In [3]: _ * 3 
Out[3]: 48 

In [4]: _1 
Out[4]: 8 

In [5]: _2 
Out[5]: 16 

In [6]: