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