Реализация bytes.join
метод, реализованный here включает в себя код, который защищает от изменения размера во время итерации:Изменение размера последовательности питона во время итерации
if (seqlen != PySequence_Fast_GET_SIZE(seq)) {
PyErr_SetString(PyExc_RuntimeError,
"sequence changed size during iteration");
goto error;
}
Как можно изменить итератор последовательность внутри bytes.join
вызова и почему выше код необходимо? Или, может быть, это не нужно и лишнее?
Почему вы хотите изменить размер последовательности во время ее повтора? Вероятно, это плохая идея. Покажите нам свой код, возможно, есть лучший способ. –
Меня интересует, почему упомянутый фрагмент кода находится в реализации метода «join», вот и все. – pbp
Является ли это основным C-кодом для 'str.join' Python? Как должен выглядеть результат «join», если последовательность меняется? Во всяком случае, строки неизменяемы, поэтому их последовательность байтов не должна меняться в первую очередь ... –