我们如何获得python int占用的字节数?

问题描述 投票:0回答:1

我不是在寻找一个用int表示的最大值的恒定记录;我希望找出int可以占用的最大内存量。请考虑以下代码:

import sys

def print_and_execute(*args):
    for s in args:
        print(s, end = " == ")
        r = eval(s)
        print(r)
    return

print_and_execute("type(5) ")     
print_and_execute("sys.getsizeof(5)")    
i = int()    
print_and_execute("i")    
print_and_execute("sys.getsizeof(i)")    
i = 2937    
print_and_execute("i")    
print_and_execute("sys.getsizeof(i)")
print_and_execute("sys.maxsize")
print_and_execute("sys.getsizeof(sys.maxsize)")

对于我的特定机器,输出是:

type(5)  == <class 'int'>
sys.getsizeof(5) == 28
i == 0
sys.getsizeof(i) == 24
i == 2937
sys.getsizeof(i) == 28
sys.maxsize == 9223372036854775807
sys.getsizeof(sys.maxsize) == 36

显然,一些ints是24字节长,其他是28,还有一些使用36.持有任何大小的int需要多少字节?

python python-3.x int size sizeof
1个回答
2
投票

保持任何大小int需要多少字节?

尽可能多的。 ints的大小没有限制,它们具有their documentation状态的任意大小。*

sys.maxsize不代表int物体的最大尺寸。它是Py_ssize_t的最大值(在CPython中)用于保存索引值。

例如,只需创建一个比int更大的maxsize

>>> sys.getsizeof(sys.maxsize * sys.maxsize)
44

因此,通过使用int,您可以获得给定getsizeof的字节数。

*最终,由可用内存限制。

© www.soinside.com 2019 - 2024. All rights reserved.