我不是在寻找一个用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
显然,有些int
是24个字节长,有些是28个,还有一些是36个。需要多少个字节来保存任意大小的int
?
答案 0 :(得分:2)
保持任何大小
int
需要多少字节?
尽可能多。 int
的大小没有限制,它们具有their documentation个状态的任意大小。 *
sys.maxsize
不代表int
个对象的最大大小。它是Py_ssize_t
的最大值,用于保存索引值(在CPython中)。
例如,只需创建比int
更大的maxsize
:
>>> sys.getsizeof(sys.maxsize * sys.maxsize)
44
因此,您可以使用int
获取给定getsizeof
的字节数。
*绑定,最终,按可用内存。