From 3fc9e9e028c9d55eeb4c6933e0f712aeadd6241d Mon Sep 17 00:00:00 2001 From: Vadim Nifadev <36514612+nifadyev@users.noreply.github.com> Date: Mon, 22 Apr 2024 15:24:31 +0300 Subject: [PATCH] Translate Exceeds the linit for integer string conversion example --- translations/README-ru.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/translations/README-ru.md b/translations/README-ru.md index 2c35c8f..6309e60 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1921,3 +1921,33 @@ a, b = a[b] = {}, 5 ``` --- + + +### ▶ Превышение предела целочисленного преобразования строк +```py +>>> # Python 3.10.6 +>>> int("2" * 5432) +>>> # Python 3.10.8 +>>> int("2" * 5432) +``` +**Вывод:** +```py +>>> # Python 3.10.6 +222222222222222222222222222222222222222222222222222222222222222... +>>> # Python 3.10.8 +Traceback (most recent call last): + ... +ValueError: Exceeds the limit (4300) for integer string conversion: + value has 5432 digits; use sys.set_int_max_str_digits() + to increase the limit. +``` +#### 💡 Объяснение: +Этот вызов `int()` прекрасно работает в Python 3.10.6 и вызывает ошибку `ValueError` в Python 3.10.8, 3.11. Обратите внимание, что Python все еще может работать с большими целыми числами. Ошибка возникает только при преобразовании между целыми числами и строками. +К счастью, вы можете увеличить предел допустимого количества цифр. Для этого можно воспользоваться одним из следующих способов: +- `-X int_max_str_digits` - флаг командной строкиcommand-line flag +- `set_int_max_str_digits()` - функция из модуля `sys` +- `PYTHONINTMAXSTRDIGITS` - переменная окружения + +[Смотри документацию](https://docs.python.org/3/library/stdtypes.html#int-max-str-digits) для получения более подробной информации об изменении лимита по умолчанию, если вы ожидаете, что ваш код превысит это значение. + +---