函数的作用是:返回Python 2和Python 3中的不同输出

函数的作用是:返回Python 2和Python 3中的不同输出,python,python-3.x,python-2.7,boolean,sizeof,Python,Python 3.x,Python 2.7,Boolean,Sizeof,小代码: import sys x = True print(sys.getsizeof(x)) Python 2输出: 24 28 Python 3输出: 24 28 为什么getsizeof()的输出在Python2和Python3中的功能不同?在Python2和Python3上,bool是int的子类,并且True==1。然而,在Python3上,int相当于Python2long,它以任意精度表示存储整数 在您正在运行的Python3构建中,与Python2构建中的int表

小代码:

import sys

x = True

print(sys.getsizeof(x))
Python 2输出:

24
28
Python 3输出:

24
28

为什么
getsizeof()
的输出在Python2和Python3中的功能不同?

在Python2和Python3上,
bool
int
的子类,并且
True==1
。然而,在Python3上,
int
相当于Python2
long
,它以任意精度表示存储整数

在您正在运行的Python3构建中,与Python2构建中的
int
表示相比,该表示恰好需要多4个字节来存储值1,这很可能是由于存储任意精度表示长度的
ob_size
字段造成的


如果这对您编写的程序来说真的很重要,那么您可能正在做一些非常疯狂的事情,和/或对内置类型滥用
getsizeof
sys.getsizeof()
基本上返回您正在使用的Python实现的实现细节

这意味着,即使对于相同的Python版本,您也可能会看到不同实现/平台/构建的不同大小。。。因此,你不能依赖于具体的答案——更不用说期望它们保持不变了


最后,请注意,
sys.getsizeof()
不是运算符;它只是
sys
模块的一个函数。

因为在Python 3中,内存中
True
的大小似乎要大4个字节。您的答案似乎更清楚!谢谢你的评论!:D