在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, 根据wikipedia有unicode的1,114,112个码数据点。 Windows上的sys.maxunicode错误?
为什么他们有不同的sys.maxint?
我不知道你的问题是什么,但sys.maxunicode
在Windows上没有错 。
看文档 :
sys.maxunicode
给出Unicode字符支持的最大代码点的整数。 它的值取决于配置选项,该选项指定是否将Unicode字符存储为UCS-2或UCS-4。
在Windows上的Python使用UCS-2,所以最大的代码点是65535(和补充平面字符编码2 * 16位“代理对”)。
关于sys.maxint
,这表明Python 2从“简单整数”( 123
)切换到“长整数”( 12345678987654321L
)。 很显然Python for Windows使用32位,Python for Linux使用64位。 自从Python 3以来,这已经变得无关紧要了,因为简单和长整型被合并为一个。 因此, sys.maxint
从Python 3中消失了。
有关不同的是sys.maxint,请参阅64位Windows上长的位大小是什么? 。 Python在内部使用long类型在Python 2.x上存储一个小整数。