有人知道Python是如何在内部管理int和long类型的吗?
我应该如何理解下面的代码?
>>> print type(65535)
<type 'int'>
>>> print type(65536*65536)
<type 'long'>
更新:
>>> print type(0x7fffffff)
<type 'int'>
>>> print type(0x80000000)
<type 'long'>
发布于 2010-01-21 05:01:55
int
和long
是“统一的”a few versions back。在此之前,可以通过数学运算使int溢出。
3.x通过完全消除long和只有int进一步推进了这一点。
Python 2:sys.maxint
包含
sys.getsizeof()
.核实
Python 3:sys.maxsize
包含
sys.maxsize
.幂的值
发布于 2010-01-21 05:02:57
这个PEP应该会有帮助。
底线是,在高于2.4的python版本中,您真的不应该担心这个问题
发布于 2018-09-05 10:10:05
Python 2将根据值的大小自动设置类型。最大值的指南可以在下面找到。
Python 2中的默认Int的最大值为65535,任何大于该值的值都将是一个长整型
例如:
>> print type(65535)
<type 'int'>
>>> print type(65536*65536)
<type 'long'>
在Python3中,删除了long数据类型,所有整数值都由Int类处理。Int的默认大小将取决于您的CPU架构。
例如:
每种类型的最小/最大值可以在下面找到:
-128,127
:
如果你的Int的大小超过了上面提到的限制,python会自动改变它的类型,并分配更多的内存来处理min/max值的增加。在Python 2中,它会转换为'long',现在只是转换为下一个大小的Int。
示例:如果您使用的是32位操作系统,则Int的最大值默认为2147483647。如果指定的值大于或等于2147483648,则类型将更改为Int64。
有不同的方法来检查int的大小和它的内存分配。注意:在Python3中,使用内置的type()方法将始终返回<class 'int'>
,无论您使用的是什么大小的Int。
https://stackoverflow.com/questions/2104884
复制相似问题