Odpowiedzi:
Stała sys.maxint została usunięta, ponieważ nie ma już ograniczenia wartości liczb całkowitych. Jednak sys.maxsize może być używany jako liczba całkowita większa niż jakakolwiek praktyczna lista lub indeks ciągu. Jest zgodny z „naturalnym” rozmiarem całkowitym implementacji i zazwyczaj jest taki sam, jak sys.maxint w poprzednich wersjach na tej samej platformie (przy założeniu tych samych opcji kompilacji).
Jak podkreślali inni, Python 3 int
nie ma maksymalnego rozmiaru, ale jeśli potrzebujesz czegoś, co gwarantuje, że będzie wyższa niż jakakolwiek inna int
wartość, możesz użyć wartości float dla Infinity, którą możesz uzyskać float("inf")
.
Liczba int w Pythonie 3 nie ma wartości maksymalnej.
Jeśli twoim celem jest określenie maksymalnego rozmiaru int w C po skompilowaniu w taki sam sposób jak Python, możesz użyć modułu struct, aby dowiedzieć się:
>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1
Jeśli jesteś ciekawy wewnętrznych szczegółów implementacji obiektów int w Pythonie 3, spójrz na szczegóły sys.int_info
dotyczące liczby bitów na cyfrę i rozmiaru cyfry. Żaden normalny program nie powinien o to dbać.
Jeśli szukasz liczby większej niż wszystkie inne:
Metoda 1:
float('inf')
Metoda 2:
import sys
max = sys.maxsize
Jeśli szukasz liczby mniejszej niż wszystkie inne:
Metoda 1:
float('-inf')
Metoda 2:
import sys
min = -sys.maxsize - 1
Metoda 1 działa zarówno w Python2, jak i Python3. Metoda 2 działa w Python3. Nie próbowałem metody 2 w Python2.
Python 3.0 nie ma już sys.maxint, ponieważ wartości int w Pythonie 3 mają dowolną długość. Zamiast sys.maxint ma sys.maxsize; maksymalny rozmiar dodatniego rozmiaru size_t aka Py_ssize_t.
Alternatywą jest
import math
... math.inf ...