你能抓住沒有分配給變量的實例化對象嗎? 例如: -可以抓取未分配給變量的實例化對象嗎?
import time
time.time()
我怎麼能抓住我已經實例化對象調用的方法吧。 也許我可以得到所有實例化時間對象的列表,然後通過返回的某種類型的ID重新指派它們?
你能抓住沒有分配給變量的實例化對象嗎? 例如: -可以抓取未分配給變量的實例化對象嗎?
import time
time.time()
我怎麼能抓住我已經實例化對象調用的方法吧。 也許我可以得到所有實例化時間對象的列表,然後通過返回的某種類型的ID重新指派它們?
在交互式解釋器的最後一個計算值保存爲_
>>> import time
>>> time.time()
1336296696.824
>>> _
1336296696.824
這聞起來像一個壞試圖優化哪些不需要進行優化。
讓GC處理這樣一個對象 - 它可能會立即被刪除,因爲它的引用計數在創建後立即爲零。
這也意味着無法訪問未引用的對象。
我想不出它的好用。但是我仍然想知道python用這個對象做什麼。這是一個很糟糕的問題嗎? 據我所知,每個對象都有一個唯一的id,它可能有可能是python有一個函數,它列出了自從python會話開始以來所有新創建的對象與他們的id。而且可能有另一個函數允許通過鍵入其id來返回對象。您可以將其重新分配給一個變量。 – Bentley4
沒有引用的對象根本不存在。 Python內存管理通過引用計數工作。只要對象沒有引用,它就會被銷燬。
假設你在談論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]:
很酷,我不知道。但假設上一次計算出的值已經是別的了,還有辦法保存它嗎?或者它是否立即收集垃圾? – Bentley4
我不確定那個...... – jamylak
是的,只有最後一個被保存。其他未引用的對象是垃圾收集。這是Python內存管理的基本原則。 – yak