在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?
答案 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上存储一个小整数。