Неизменяемые строки значительно упрощают распределение памяти по сравнению со строками C: вы не угадываете длину и перераспределяете, надеясь, что вы перераспределите достаточно.
Они более безопасны: вы можете никогда иметь переполнение буфера, как вы можете в C.
Существует только один вариант использования изменяемой строки.
- замена подстроки или одного символа
Все другие варианты использования строки (конкатенация, поиск и т. Д. И т. Д.), Изменчивость не имеет значения. Во всех остальных случаях изменчивость не имеет значения.
Если вы хотите заменить символ или подстроку в Python, вы просто создаете новую строку
x = x[:place] + replacement + x[place+1:]
Это единственный код, который является новым или отличительным.
По причинам, которые я не понимаю, важно добавить следующее.
"Существуют другие способы избежать переполнения буфера строк, кроме неизменяемых строк."
Для целей этого вопроса (в частности, о Python) неизменяемые строки имеют приятное следствие отсутствия переполнения буфера. Для других языков применяются другие принципы, правила и нюансы.