小代码:
import sys
x = True
print(sys.getsizeof(x))
Python 2输出:
24
Python 3输出:
28
为什么getsizeof()
的输出在Python 2和Python 3中不同?
答案 0 :(得分:3)
对于内置类型,sys.getsizeof()
基本上返回您正在使用的Python实现的实现细节。
这意味着,即使对于相同的Python版本,对于不同的实现/平台/内部版本,您可能会看到不同的大小...因此,您不能依赖于特定的答案-更不用说他们了保持不变!
最后,请注意sys.getsizeof()
不是运算符;它只是sys
模块的功能。
答案 1 :(得分:2)
在Python 2和Python 3上,bool
是int
和True == 1
的子类。但是,在Python 3上,int
与Python 2 long
等效,并且它以任意精度表示形式存储整数。
在您正在运行的Python 3构建上,该表示正好比int
表示在Python 2构建上占用了4个字节来存储值1,这很可能是由于{{ 1}}字段,用于存储任意精度表示的长度。
如果这实际上对您编写的程序很重要,那么您可能正在做一些非常疯狂的事情,并且/或者滥用了ob_size
。