Python 3.11+sysфункция
sys.get_int_max_str_digits()
интерпретатор
Возвращает предел числа цифр при переводе int в str и обратно; по умолчанию 4300. Больше — ValueError вместо результата.
Синтаксис
sys.get_int_max_str_digits()
Частая неожиданность в задачах на длинную арифметику: сам int растёт без границ, а print(2**20000) падает с ValueError «Exceeds the limit (4300 digits)». Ограничение появилось как защита от DoS: перевод огромного числа в строку занимает квадратичное время. 0 означает «без предела». Переводы в hex(), bin() и oct() под предел не попадают.
Примеры
import sys
print(sys.get_int_max_str_digits()) # → 4300
n = 2 ** 20000
print(n.bit_length()) # → 20001
try:
print(n)
except ValueError as e:
print(type(e).__name__) # → ValueError
print(len(hex(n))) # → 5003
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности