我读到PyObject有用于垃圾收集的类型、值和引用计数。但下面显示每个整数对象占用 32 个字节,对于 64 位操作系统,似乎还有一个字段。那会是什么?
>>> hex(id(3))
'0x1595ae90130'
>>> hex(id(4))
'0x1595ae90150'
>>> hex(id(5))
'0x1595ae90170'
Run Code Online (Sandbox Code Playgroud)
您会发现 ID 之间的间隔为 32 个字节。
该函数id 返回一个地址,但不会告知您该对象的大小。您在这里看到的 32 位差异0x1595ae90150 - 0x1595ae90130不是对象的大小。getsizeof要获取可以在sys 模块中使用的对象的大小:
import sys
x = 5
print(sys.getsizeof(x))
# 28
Run Code Online (Sandbox Code Playgroud)