2015-01-21 47 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元组无关,至少不是直接!