Python sys.maxint, sys.maxunicode sous Linux et Windows

Sur Debian Linux 6 bits:

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 

Sur Windows 7 64 bits:

 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 

Les deux systèmes d’exploitation sont 64 bits. Ils ont sys.maxunicode, selon wikipedia Il ya 1.114.112 points de code en unicode. Est-ce que sys.maxunicode sous Windows est incorrect?

Et pourquoi ont-ils différents sys.maxint?

Je ne sais pas quelle est votre question, mais sys.maxunicode ne se trompe pas sous Windows.

Voir les documents :

sys.maxunicode

Un entier donnant le plus grand sharepoint code pris en charge pour un caractère Unicode. La valeur de cette option dépend de l’option de configuration qui spécifie si les caractères Unicode sont stockés sous la forme UCS-2 ou UCS-4.

Python sous Windows utilise UCS-2, de sorte que le plus grand sharepoint code est 65 535 (et les caractères de plan supplémentaire sont codés par des «paires de substitution» de 2 * 16 bits).

A propos de sys.maxint , cela montre à quel point Python 2 passe de “entiers simples” ( 123 ) à “entiers longs” ( 12345678987654321L ). De toute évidence, Python pour Windows utilise 32 bits et Python pour Linux utilise 64 bits. Depuis Python 3, cela n’a plus d’importance car les types d’entiers simples et longs ont été fusionnés en un seul. Par conséquent, sys.maxint est parti de Python 3.

En ce qui concerne la différence est sys.maxint, voir Quelle est la taille de bit de long sur Windows 64 bits? . Python utilise le type long en interne pour stocker un petit entier sur Python 2.x.