Про изменяемость строк
Почему в Python нельзя просто взять и заменить один символ в строке через s[0] = 'A', а в JavaScript со строками так тоже не получится? И как тогда правильно «исправить» символ в строке?
1 ответ
Строки в Python неизменяемы намеренно: на один объект строки могут ссылаться несколько переменных, строки работают ключами словарей, у них кэшируется хеш. Если бы s[0] = 'A' срабатывало, поменялась бы «одна» строка — а задело бы всех, кто на неё ссылается.
Поэтому строку не правят, а собирают из неё новую:
s = 'кот'
s = 'К' + s[1:] # срез + конкатенация
# если замен много — через список:
chars = list(s)
chars[0] = 'К'
s = ''.join(chars)
В JavaScript то же самое: строки immutable, s[0] = 'A' молча ничего не изменит, а в strict mode бросит TypeError. Там обычно пишут s = 'A' + s.slice(1).
Обратите внимание: переприсваивание переменной — это не изменение строки. Создаётся новая строка, и имя начинает указывать на неё.