getsizeof()函数在Python 2和Python 3中返回不同的输出

时间:2018-10-08 07:34:26

标签: python python-3.x python-2.7 boolean sizeof

小代码:

import sys

x = True

print(sys.getsizeof(x))

Python 2输出:

24

Python 3输出:

28

为什么getsizeof()的输出在Python 2和Python 3中不同?

2 个答案:

答案 0 :(得分:3)

对于内置类型,sys.getsizeof()基本上返回您正在使用的Python实现的实现细节

这意味着,即使对于相同的Python版本,对于不同的实现/平台/内部版本,您可能会看到不同的大小...因此,您不能依赖于特定的答案-更不用说他们了保持不变!

最后,请注意sys.getsizeof()不是运算符;它只是sys模块的功能。

答案 1 :(得分:2)

在Python 2和Python 3上,boolintTrue == 1的子类。但是,在Python 3上,int与Python 2 long等效,并且它以任意精度表示形式存储整数。

在您正在运行的Python 3构建上,该表示正好比int表示在Python 2构建上占用了4个字节来存储值1,这很可能是由于{{ 1}}字段,用于存储任意精度表示的长度。

如果这实际上对您编写的程序很重要,那么您可能正在做一些非常疯狂的事情,并且/或者滥用了ob_size