【问题标题】:What are the currently possible values for sys.maxsize?sys.maxsize 当前可能的值是多少?
【发布时间】:2018-03-12 12:01:56
【问题描述】:

the latest Python 2 documentation:

sys.maxsize

平台支持的最大正整数 Py_ssize_t 类型,因此最大大小列表、字符串、字典和 许多其他容器可以有。

the latest Python 3 documentation:

sys.maxsize

一个给定最大值的整数类型的变量 py_ssize_t 可以拿。在 32 位平台上通常为 2**31 - 1 并且 2**63 - 1 在 64 位平台上。

sys.maxsize 的值是在 Python 2 上使用的 in this file,其值在 Python 3 文档中指定:

  • 2**31 - 1 = 2147483647;
  • 2**63 - 1 = 9223372036854775807。

我的问题是:sys.maxsize 在 Python 2 中可以采用哪些可能的值?这两个是可能值的一部分吗?是否有任何其他可能的值(例如,在其他平台或操作系统上)?找到它在 Python 3 中也可以采用的可能值会很有趣。

相关问题:

【问题讨论】:

    标签: python python-2.7 python-3.x int max-size


    【解决方案1】:
    • sys.maxsize 告诉您一些有关用于编译 CPython 的 C 编译器的信息,因此 Python 2 和 Python 3 之间没有区别。它与所使用的 C 编译器和选项有关,而不是与正在编译的 Python 版本有关。
    • 它是适合平台 C 编译器 ssize_t 类型的最大正整数。这是我见过的所有平台上的 32 位或 64 位有符号 2 的补码整数 ;-) 与您已经找到的两个特定值完全对应。
    • 在文档中它被称为type Py_ssize_t,因为 Python 必须为新的 C 概念创建自己的 typedef(在 C 级别),等待世界上所有的 C 编译器来实现它们。即使在所有已知的 C 编译器都赶上了(“不破坏,不修复”)之后,这些 Python 特定的 typedef 通常仍会保留在源代码中。
    【解决方案2】:

    两个可能的值是由于 python 位版本。

    +=============+=====================================+======================================+
    |             |            Python 32 bit            |            Python 64 bit             |
    +=============+=====================================+======================================+
    | sys.version | 3.7.3 ….[MSC v.1916 32 bit (Intel)] | 3.7.4 …..[MSC v.1916 64 bit (AMD64)] |
    +-------------+-------------------------------------+--------------------------------------+
    | sys.maxsize | 2147483647                          | 9223372036854770000                  |
    +-------------+-------------------------------------+--------------------------------------+
    

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 2021-08-06
      • 2016-11-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多