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

时间:2017-10-01 00:19:45

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

the latest Python 2 documentation中:

  

了sys.maxsize

     

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

the latest Python 3 documentation中:

  

了sys.maxsize

     

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

Python 2上使用的值sys.maxsizein this file,其中包含Python 3文档中指定的值:

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

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

相关问题:

2 个答案:

答案 0 :(得分:4)

  • 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通常会在源代码中出现("没有破坏,不能修复")。

答案 1 :(得分: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                  |
+-------------+-------------------------------------+--------------------------------------+