Python如何管理int和long?

新手上路,请多包涵

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

  • 它会动态选择正确的类型吗?
  • int 的限制是多少?
  • 我正在使用 Python 2.6,与以前的版本有什么不同吗?

我应该如何理解下面的代码?

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

更新:

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

原文由 luc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 285
2 个回答

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

3.x 通过完全消除 long 并只有 int 进一步推进了这一点。

  • Python 2 : sys.maxint 包含 Python int 可以容纳的最大值。
    • 在 64 位 Python 2.7 上,大小为 24 字节。检查 sys.getsizeof()
  • Python 3 : sys.maxsize 包含 Python int 可以达到的最大字节数。
    • 这将是 32 位的千兆字节和 64 位的艾字节。
    • 如此大的 int 将具有类似于 8 的 sys.maxsize 的值。

原文由 Ignacio Vazquez-Abrams 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个 PEP 应该有所帮助。

底线是你真的不应该在 python 版本 > 2.4 中担心它

原文由 mluebke 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进