sys.maxsize 当前可能的值是多少?

What are the currently possible values for sys.maxsize?

the latest Python 2 documentation中:

sys.maxsize

The largest positive integer supported by the platform’s Py_ssize_t type, and thus the maximum size lists, strings, dicts, and many other containers can have.

the latest Python 3 documentation中:

sys.maxsize

An integer giving the maximum value a variable of type Py_ssize_t can take. It’s usually 2**31 - 1 on a 32-bit platform and 2**63 - 1 on a 64-bit platform.

sys.maxsizein this file 在 Python 2 上使用 Python 3 文档中指定的值:

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

相关问题:

  • sys.maxsize 告诉你一些关于用于编译 CPython 的 C 编译器的信息,所以 Python 2 和 Python 3 之间没有区别。它必须处理使用的 C 编译器和选项,而不是编译的 Python 版本。
  • 这是适合平台 C 编译器的 ssize_t 类型的最大正整数。这是我见过的所有平台上的 32 位或 64 位带符号 2 的补码整数 ;-) 与您已经找到的两个特定值完全对应。
  • 它在文档中被称为 type Py_ssize_t,因为 Python 必须为更新的 C 概念创建自己的类型定义(在 C 级别),等待世界上所有的 C 编译器来实现它们。即使在所有已知的 C 编译器都赶上之后,那些特定于 Python 的类型定义通常仍然存在于源代码中 ("not broke, don't fix")。

两个可能的值是由于 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                  |
+-------------+-------------------------------------+--------------------------------------+