Wat is sys.maxint in Python 3?

Ik heb geprobeerd uit te vinden hoe een maximaal geheel getal moet worden weergegeven en ik heb gelezen om "sys.maxint" te gebruiken. Als ik het in Python 3 echter aanroep, krijg ik:

AttributeError: module 'object' has no attribute 'maxint'

Antwoord 1, autoriteit 100%

De constante sys.maxint is verwijderd, omdat er geen limiet meer is
naar de waarde van gehele getallen. sys.maxsize kan echter worden gebruikt als een
geheel getal groter dan elke praktische lijst of tekenreeksindex. Het voldoet aan
de natuurlijke gehele grootte van de implementatie en is meestal hetzelfde
als sys.maxint in eerdere releases op hetzelfde platform (ervan uitgaande dat de
dezelfde bouwopties).

http://docs.python.org/3.1/whatsnew/3.0. html#integers


Antwoord 2, autoriteit 45%

Zoals anderen hebben opgemerkt, heeft int van Python 3 geen maximale grootte, maar als je gewoon iets nodig hebt dat gegarandeerd hoger is dan elke andere int-waarde, dan kun je de float-waarde voor Infinity gebruiken, die je kunt krijgen met float("inf").


Antwoord 3, autoriteit 14%

Als u op zoek bent naar een getal dat groter is dan alle andere:

Methode 1:

float('inf')

Methode 2:

import sys
max = sys.maxsize

Als u op zoek bent naar een getal dat kleiner is dan alle andere:

Methode 1:

float('-inf')

Methode 2:

import sys
min = -sys.maxsize - 1

Methode 1 werkt in zowel Python2 als Python3. Methode 2 werkt in Python3. Ik heb methode 2 niet geprobeerd in Python2.


Antwoord 4, autoriteit 13%

Python 3 ints hebben geen maximum.

Als het je doel is om de maximale grootte van een int in C te bepalen wanneer het op dezelfde manier is gecompileerd als Python was, kun je de struct-module gebruiken om erachter te komen:

>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1

Als je nieuwsgierig bent naar de interne implementatiedetails van Python 3 int-objecten, kijk dan op sys.int_info voor details over bits per cijfer en cijfergrootte. Geen enkel normaal programma zou hier iets om moeten geven.


Antwoord 5

Python 3.0 heeft geen sys.maxint meer omdat de ints van Python 3 van
willekeurige lengte. In plaats van sys.maxint heeft het sys.maxsize; het maximum
grootte van een positieve maat size_t oftewel Py_ssize_t.


Antwoord 6

Een alternatief is

import math
... math.inf ...

LEAVE A REPLY

Please enter your comment!
Please enter your name here

fifteen − 8 =

Other episodes