python变量在内存中的样子

时间:2015-01-21 04:18:21

标签: python python-2.7 cpython

我想知道Python变量(int,list,tuple)在内存中的样子。这就是我现在所处的位置。

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如何在内存中存储变量?

1 个答案:

答案 0 :(得分:2)

下载Python C源并研究它们。你会看到"几乎所有的东西"是PyObject* - 指向PyObject struct的指针。你看到的\x01& c只是其中一些指针中的随机字节,与你看到的1,2,3元组无关,至少不是直接的!