Python中的sys.maxint和sys.maxunicode在Linux和Windows上的表现

5 投票
2 回答
3307 浏览
提问于 2025-04-17 06:29

在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的东西,根据维基百科,Unicode中有1,114,112个编码点。那么,Windows上的sys.maxunicode是错的吗?

还有,为什么它们的sys.maxint不同呢?

2 个回答

1

关于sys.maxint的区别,可以参考这个链接:在64位Windows上long的位数是多少?。在Python 2.x中,Python内部使用long类型来存储小整数。

4

我不知道你具体问的是什么,但在Windows上,sys.maxunicode 这个值并不是 错误的

你可以看看这个 文档

sys.maxunicode

这是一个整数,表示支持的Unicode字符中最大的编码点。这个值取决于配置选项,决定Unicode字符是以UCS-2还是UCS-4的方式存储。

在Windows上的Python使用的是UCS-2,所以最大的编码点是65,535(而补充平面字符是通过两个16位的“代理对”来编码的)。

关于 sys.maxint,这个值表示Python 2在什么情况下从“简单整数”(比如 123)切换到“长整数”(比如 12345678987654321L)。显然,Windows上的Python使用的是32位,而Linux上的Python使用的是64位。从Python 3开始,这个区分就不重要了,因为简单整数和长整数类型合并成了一种。因此,sys.maxint 在Python 3中就不再存在了。

撰写回答