2015-01-21 23 views
0

我想知道Python變量(int,list,tuple)在內存中的樣子。這就是我現在所處的位置。python變量在內存中的樣子

from ctypes import string_at 
from sys import getsizeof 
from binascii import hexlify 
string_at(id(a), getsizeof(a)) 

我希望它會返回內存中變量的十六進制表示。

然而,這裏是輸出的時候我給你值1,2,3變量a:

1 - '\xd6\x05\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00' 
2 - '\x17\x02\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00' 
3 - '\xdc\x00\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00' 
4 - '\x06\x01\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00' 

某處靠近中間,我可以看到\ X01 \ X02 ...等。但是,這裏是我的其他問題:

  1. 在開始,我可以看到另外兩個字節的變化,那些值是什麼?

  2. 除了那些\ x00,我可以看到其他幾個字節,如...\xc0\x92\x17\x00\x01...如何解釋這些值?

  3. 是否有任何資源可供我學習python如何在內存中存儲變量?

回答

2

下載Python C源代碼並研究它們。您會看到「幾乎所有」都是PyObject* - 指向PyObjectstruct的指針。您看到的\x01 & c只是其中一些指針中的隨機字節,與您看到的1,2,3元組無關,至少不是直接!