Python如何管理int和long?


问题内容

有人知道Python如何内部管理int和long类型吗?

  • 它会动态选择合适的类型吗?
  • 整数的限制是多少?
  • 我正在使用Python 2.6,与以前的版本有所不同吗?

我应该如何理解以下代码?

>>> print type(65535)
<type 'int'>
>>> print type(65536*65536)
<type 'long'>

更新:

>>> print type(0x7fffffff)
<type 'int'>
>>> print type(0x80000000)
<type 'long'>

问题答案:

intlong“统一”了几个版本。在此之前,可以通过数学运算来溢出int。

3.x通过完全消除long并仅具有int来进一步提高了此功能。

  • Python 2sys.maxint包含Python int可以容纳的最大值。
    • 在64位Python 2.7上,大小为24个字节。用检查sys.getsizeof()
  • Python 3sys.maxsize包含Python int可以达到的最大字节数。
    • 这将是32位的千兆字节,以及64位的EB。
    • 如此大的int值将等于8的幂sys.maxsize