>>> sys.getsizeof(int)
436 #? does this mean int occupies 436 bytes .
>>> sys.getsizeof(1)
12 #12 bytes for int object, is this the memory requirement.
我以为python中的int是4个字节表示的,为什么报12个字节
请有人解释为什么当 int 只使用 4 个字节时它报告 12 个字节
最佳答案
是的,int
实例在您的系统上占用 12 个字节。整数(与任何对象一样)具有属性,即指向其他对象的指针,这些属性占用的内存空间超出了对象自身值所使用的空间。所以 4 个字节用于整数值,4 个字节用于指向 __class__
的指针(否则,Python 不知道对象属于什么类型以及如何开始解析从 继承的属性名称>int
class and its parents),另外 4 个用于对象的引用计数,由垃圾收集器使用。
int
类型在您的系统上占用 436 个字节,它将是指向 int
类的各种方法和其他属性以及 Python 需要的任何其他内务管理信息的指针类。 int
类是用标准 Python 实现中的 C 语言编写的;你可以去看看源代码,看看里面有什么。
关于python - 我如何确定 python 使用的类型的确切大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779207/