Linux和Windows上的Python sys.maxint,sys.maxunicode

时间:2011-11-17 09:29:40

标签: python windows linux unicode

在64位Debian Linux 6上:

Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.maxint
9223372036854775807
>>> sys.maxunicode
1114111

在64位Windows 7上:

Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.maxint
2147483647
>>> sys.maxunicode
65535

两种操作系统均为64位。他们有sys.maxunicode,according to wikipedia unicode中有1,114,112个代码点。 Windows上的sys.maxunicode是错误的吗?

为什么他们有不同的sys.maxint?

2 个答案:

答案 0 :(得分:4)

我不知道您的问题是什么,但sys.maxunicode在Windows上不是错误

请参阅docs

  

sys.maxunicode

     

为Unicode字符提供支持的最大代码点的整数。这个值取决于配置选项   指定Unicode字符是否存储为UCS-2或UCS-4。

Windows上的Python使用UCS-2,因此最大的代码点是65,535(补充平面字符由2 * 16位“代理对”编码)。

关于sys.maxint,这表明Python 2从“简单整数”(123)切换到“长整数”(12345678987654321L)。显然,Python for Windows使用32位,而Python for Linux使用64位。从Python 3开始,这变得无关紧要,因为简单和长整数类型已合并为一个。因此,sys.maxint已从Python 3中删除。

答案 1 :(得分:1)

关于差异是sys.maxint,请参阅What is the bit size of long on 64-bit Windows?。 Python在内部使用long类型在Python 2.x上存储一个小整数。