← Все вопросы

Про изменяемость строк

Задан 2 месяца назад22 просмотров1 ответ
0

Почему в Python нельзя просто взять и заменить один символ в строке через s[0] = 'A', а в JavaScript со строками так тоже не получится? И как тогда правильно «исправить» символ в строке?

1 ответ

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).

Обратите внимание: переприсваивание переменной — это не изменение строки. Создаётся новая строка, и имя начинает указывать на неё.

Ваш ответ

, чтобы ответить на вопрос.