Python 3
En Python 3, cette question ne s'applique pas. Le type int
simple est non borné.
Cependant, vous pourriez en réalité chercher des informations sur la [taille des mots](https://en.wikipedia.org/wiki/Word(computer_architecture)#Table_of_wordsizes) de l'interpréteur actuel, qui sera la même que la taille des mots de la machine dans la plupart des cas. Cette information est toujours disponible en Python 3 avec sys.maxsize
, qui est la valeur maximale représentable par un mot signé. De manière équivalente, c'est la taille de la liste la plus grande possible ou de la séquence en mémoire.
En général, la valeur maximale représentable par un mot non signé sera sys.maxsize * 2 + 1
, et le nombre de bits dans un mot sera math.log2(sys.maxsize * 2 + 2)
. Voir cette réponse pour plus d'informations.
Python 2
En Python 2, la valeur maximale pour les valeurs int
simples est disponible sous la forme de sys.maxint
:
>>> sys.maxint # sur mon système, 2**63-1
9223372036854775807
Vous pouvez calculer la valeur minimale avec -sys.maxint - 1
comme indiqué dans la documentation.
Python passe sans encombre des entiers simples aux entiers longs une fois que vous dépassez cette valeur. Donc la plupart du temps, vous n'aurez pas besoin de le savoir.
21 votes
Notez que en Python 3, le type
int
est essentiellement le même que le typelong
en Python 2, donc l'idée d'un maximum ou d'un minimumint
disparaît complètement. C'est fondamentalement sans importance même sur Python 2.23 votes
@agf : cela peut être pertinent de différentes manières. Par exemple dans n'importe quel algorithme qui nécessite de sauvegarder la valeur minimale trouvée (comme un algorithme de tri). La valeur minimale pourrait être initialisée à sys.maxint, ce qui garantit que n'importe quelle première valeur trouvée est prise comme minimum
2 votes
@Toaster sauf que vous pouvez avoir une liste où toutes les valeurs sont supérieures à
sys.maxint
car c'est seulement le maximum pour le typeint
sur Python 2, que Python promouvra silencieusement enlong
.57 votes
Si vous avez besoin d'utiliser "une valeur très grande" dans un algorithme, par exemple trouver le minimum ou le maximum d'une collection générique,
float('inf')
oufloat('-inf')
peuvent être très utiles.1 votes
Possible duplicate of Plages d'entiers en Python
0 votes
@geoff vrai, mais un inconvénient pour le code moderne est que les flottants ne peuvent pas être utilisés comme
Literal
dans les indications de type. Donc, vous ne pouvez pas dire qu'une liste peut contenirUnion[int, Literal[-inf]]
même si c'est peut-être exactement ce qui est nécessaire pour une application donnée :/0 votes
Il vaut peut-être la peine de lire : [SO] : Valeur maximale et minimale des entiers de types C depuis Python (réponse de @CristiFati).