Результатом умножения строки на целое число k будет эта строка повторяется k раз (в любом порядке умножения). Например:
>>> 3 * "s"
'sss'
>>> "s" * 3
'sss'
В этом случае вы запросили строку длиной 10 ^ 16. Для этого потребуется 10 петабайт виртуального адресного пространства. Даже если ваша реализация python в принципе позволяет вам создать объект такого размера, крайне маловероятно, что физические ограничения вашего компьютера позволят это (даже с учетом использования пространства подкачки).
точный максимум, вероятно, будет зависеть от реализации. Например, в python, запущенном на x86_64 Linux, возникает OverflowError
, где k равно 2 ^ 63 или больше, то есть когда длина не может быть сохранена в 64-битном signed long
. Для чисел меньше этого, но где память, тем не менее, была бы исчерпана, вместо этого поднимается MemoryError
.
В вашей реализации Python отсечка кажется ниже 2 ^ 63 (что примерно 9e18
). Поэтому возможно, что 32-битное signed int
используется как «целое число размера индекса», что подразумевает максимальную длину строки 2 ГБ. Если это так, то это находится в пределах объема физической памяти, который реально возможен в вашей системе, и в этом случае возможно, что существует предел, который действительно имеет значение. В этом случае вам может потребоваться переработать любой код, чтобы уменьшить длину используемых строк.