J'ai essayé de savoir comment représenter un entier maximum, et j'ai lu pour l'utiliser "sys.maxint"
. Cependant, en Python 3, quand je l'appelle, j'obtiens:
AttributeError: module 'object' has no attribute 'maxint'
J'ai essayé de savoir comment représenter un entier maximum, et j'ai lu pour l'utiliser "sys.maxint"
. Cependant, en Python 3, quand je l'appelle, j'obtiens:
AttributeError: module 'object' has no attribute 'maxint'
Réponses:
La constante sys.maxint a été supprimée, car il n'y a plus de limite à la valeur des entiers. Cependant, sys.maxsize peut être utilisé comme un entier plus grand que n'importe quelle liste pratique ou index de chaîne. Il est conforme à la taille entière «naturelle» de l'implémentation et est généralement identique à sys.maxint dans les versions précédentes sur la même plate-forme (en supposant les mêmes options de construction).
Comme d'autres l'ont souligné, Python 3 int
n'a pas de taille maximale, mais si vous avez juste besoin de quelque chose qui est garanti supérieur à toute autre int
valeur, vous pouvez utiliser la valeur float pour Infinity, avec laquelle vous pouvez obtenir float("inf")
.
Les entiers Python 3 n'ont pas de maximum.
Si votre objectif est de déterminer la taille maximale d'un int en C lorsqu'il est compilé de la même manière que Python, vous pouvez utiliser le module struct pour le savoir:
>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1
Si vous êtes curieux de connaître les détails d'implémentation interne des objets Python 3 int, recherchez les sys.int_info
bits par chiffre et les détails de la taille des chiffres. Aucun programme normal ne devrait s'en soucier.
Si vous recherchez un nombre plus grand que tous les autres:
Méthode 1:
float('inf')
Méthode 2:
import sys
max = sys.maxsize
Si vous recherchez un nombre plus petit que tous les autres:
Méthode 1:
float('-inf')
Méthode 2:
import sys
min = -sys.maxsize - 1
La méthode 1 fonctionne à la fois en Python2 et Python3. La méthode 2 fonctionne en Python3. Je n'ai pas essayé la méthode 2 en Python2.
Python 3.0 n'a plus sys.maxint puisque les entiers de Python 3 sont de longueur arbitraire. Au lieu de sys.maxint, il a sys.maxsize; la taille maximale d'un size_t de taille positive aka Py_ssize_t.
Une alternative est
import math
... math.inf ...