2017-05-19 32 views
1

假設我有1000個相同類實例化的不同對象,我將它分配給一個字典,其鍵是從1到1000的整數,其值是那些1000個對象。Python真的需要什麼內存?

現在,我創建另一個字典,它的鍵是元組(OBJ1,1),(obj2,2)等OBJ的是那些相同的1000個對象。而其值爲1到1000

難道那些2個字典的存在意味着,內存使用量將增加一倍,因爲1000級的對象在每個字典的關鍵和價值觀?

他們不應該是吧?因爲我們沒有創建新的對象,所以我們只是分配對這些相同對象的引用。因此,我可以將1000個與這些對象類似的字典作爲值或鍵(元組的一部分),並且不會顯着增加內存使用量。

是嗎?

+4

雖然您不需要自己製作對象的副本,但您確實需要爲每個對象(幕後)製作指針。如果你的對象很小,那麼你確實會「顯着增加內存使用量」。 –

+1

http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables – Lanting

+0

@aryamccarthy而是指向那些對象是輕量級的,所以我爲什麼會有顯著上升? – user1008636

回答

1

對象不會被複制,而是被引用。

如果你的對象是小的(例如整數),元組的列表或字典的開銷是顯著。

如果您的對象很大(例如很長的唯一字符串),與對象的大小相比,開銷要小得多,所以由於創建另一個相同的字典/列表,內存使用量不會增加太多對象。

相關問題