1

最新的 Python 2 文档中

系统最大尺寸

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

最新的 Python 3 文档中

系统最大尺寸

一个整数,给出 Py_ssize_t 类型的变量可以采用的最大值。在 32 位平台上通常为 2**31 - 1,在 64 位平台上通常为 2**63 - 1。

该值sys.maxsize在Python 2 上使用的此文件中,其值在 Python 3 文档中指定:

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

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

相关问题:

4

2 回答 2

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

两个可能的值是由于 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                  |
+-------------+-------------------------------------+--------------------------------------+
于 2020-06-12T08:23:00.507 回答