Строки нельзя изменить
Строку невозможно поменять «на месте» — но можно построить новую. Разберём, почему это так и как это влияет на все методы строк.
Строку нельзя изменить «на месте»
Может показаться, что раз мы умеем доставать символ по индексу
(word[0]), то можно и заменить его тем же
способом. Это не так — строки в Python неизменяемы (immutable):
word = "Cat"
word[0] = "B"
# TypeError: 'str' object does not support item assignment
Правильный способ: создать новую строку
Вместо изменения «на месте» строим НОВУЮ строку — из кусочков старой — и сохраняем её в переменную (можно в ту же самую):
word = "Cat"
word = "B" + word[1:] # склеиваем "B" с "at" — получаем новую строку
print(word) # Bat
Именно поэтому все методы строк — upper(),
replace() и другие (разделы 8.9–8.10) — не меняют исходную
строку, а возвращают новую. Если результат нужно сохранить, его нужно
явно присвоить переменной:
text = "python"
text.upper() # результат создан, но никуда не сохранён — и потерян!
print(text) # python — исходная строка не изменилась
text = text.upper() # а вот так — сохранили результат обратно в text
print(text) # PYTHON
Для строки «home» постройте новую строку «dome», заменив первый символ через срез и конкатенацию — так, как показано выше для «Cat» → «Bat».