2017-10-01 4 views
1

En the latest Python 2 documentation:Quelles sont les valeurs actuellement disponibles pour sys.maxsize?

sys.maxsize

Le plus grand nombre entier positif soutenu par le type Py_ssize_t de la plate-forme, et donc les listes de taille maximale, les chaînes, dicts et beaucoup d'autres conteneurs peuvent avoir .

Dans the latest Python 3 documentation:

sys.maxsize

un entier donnant la valeur maximale une variable de type Py_ssize_t peut prendre. Il s'agit généralement de 2 ** 31 - 1 sur une plate-forme 32 bits et 2 ** 63 - 1 sur une plate-forme 64 bits.

La valeur sys.maxsize est utilisé sur in this file python 2 avec les valeurs spécifiées dans la documentation Python 3:

  • 2 ** 31-1 = 2147483647;
  • 2 ** 63 - 1 = 9223372036854775807.

Ma question est: quelles sont les valeurs possibles sys.maxsize peut prendre en Python 2? Sont-ils deux parties des valeurs possibles ou non? Y a-t-il d'autres valeurs possibles (sur d'autres plateformes ou systèmes d'exploitation, par exemple)? Il serait intéressant de trouver les valeurs possibles qu'il peut aussi prendre dans Python 3.

questions connexes:

Répondre

4
  • sys.maxsize vous dit quelque chose au sujet du compilateur C utilisé pour compiler CPython, donc il n'y a pas de différence entre Python 2 et Python 3. Il doit faites avec le compilateur C et les options qui ont été utilisées, pas avec la version de Python en cours de compilation.
  • C'est le plus grand nombre entier positif qui correspond au type ssize_t du compilateur C de la plateforme. Ce qui est un entier signé en complément de 32 ou 64 bits sur toutes les plateformes que j'ai jamais vues ;-) Qui correspondent exactement aux deux valeurs spécifiques que vous avez déjà trouvées.
  • Il est appelé type Py_ssize_t dans les docs car Python devait créer son propre typedefs (au niveau C) pour les nouveaux concepts C attendant que tous les compilateurs C du monde les implémentent. Ces typedefs spécifiques à Python restent généralement dans le code source même après que tous les compilateurs C connus se sont rattrapés ("pas cassé, ne corrige pas").
+1

[est ici où ils sont définis] (https://github.com/python/cpython/blob/288d1daadaddf6ae35cf666138ba4b5d07449657/Include/pyport.h#L108-L111) –