根据这个问题(How big can a 64bit signed integer be?),我了解到在一个64位机器上可使用的最大数值为2^64-1
,即92,233,720,368,547,758,070
。这意味着,即使我加上1
,它也应该返回inf
。但事实并非如此。下面是我的观察:
>>> max = sys.maxsize
>>> format(max, ',')
'9,223,372,036,854,775,807'
>>> a = max * 10
>>> format(a, ',')
'92,233,720,368,547,758,070'
>>> a / max
10.0
即使由于某种原因
92,233,720,368,547,758,070
不是 Python 中最大的数字,那么 sys.maxsize
有什么用呢?其次,一个64位数字不应该占用64位内存空间吗?为什么
max
和 a
都只占用了 36字节
?>>> sys.getsizeof(max)
36
>>> sys.getsizeof(a)
36
有人能描述一下这两个概念的混淆吗?
sys.maxsize
仍然相关 - 您只能将列表/元组寻址到该大小(嗯 - 在达到这个限制之前,您将耗尽内存...)。 - hiro protagonistsys.maxint
和sys.maxsize
。现在后者与整数没有太多关系,它是指平台上最大的Py_ssize_t
- 在日常 Python 编程中不再真正相关,除非你编写 C 扩展程序。 - wim