如何确定python使用的类型的确切大小

2024-09-26 22:09:29 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> 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个字节


Tags: thefor字节bytesobjectis报告sys
2条回答

是的,一个int实例占用系统12个字节。整数(和任何对象一样)都有属性,即指向其他对象的指针,它们占用的内存空间超出了对象自身的值。因此,4个字节表示整数的值,4个字节用于指向__class__的指针(否则,Python将不知道该对象属于什么类型,以及如何开始解析从int类及其父类继承的属性名),另外4个字节用于对象的引用计数,垃圾回收器将使用它。在

类型int在系统上占用436个字节,它将指向int类的各种方法和其他属性,以及Python对该类所需的任何其他内务处理信息。int类是在标准Python实现中用C编写的;您可以查看源代码并查看其中的内容。在

来自^{}的文档:

getsizeof() calls the object’s __sizeof__ method and adds an additional garbage collector overhead if the object is managed by the garbage collector.

这可能就是sys.getsizeof(1)给你12个字节的原因。对于第一行,请记住int对象是什么:

>>> int
<type 'int'>

int是整数类型本身,而不是整数。python中的整数实际上占用所需的字节数(这就是为什么不需要担心溢出的原因),而类型是处理所有这些功能的地方。我相信这种区别只对内置类型有效,对于用户定义的对象,类型本身的大小可能与该类型的实例大小相似。在

相关问题 更多 >

    热门问题