【问题标题】:getsizeof() function returns different output in Python 2 and Python 3getsizeof() 函数在 Python 2 和 Python 3 中返回不同的输出
【发布时间】:2019-03-12 20:08:36
【问题描述】:

小代码:

import sys

x = True

print(sys.getsizeof(x))

Python 2 输出:

24

Python 3 输出:

28

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

【问题讨论】:

  • 因为True 在内存中的大小在 Python 3 中似乎大了 4 个字节。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    如果这对您编写的程序真的很重要,那么您可能正在做一些非常疯狂的事情,和/或滥用getsizeof

    【讨论】:

    • 你似乎有更清晰的答案!谢谢你的评论! :D
    猜你喜欢
    • 2021-04-28
    • 2017-05-20
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2020-06-18
    • 2011-11-25
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多