LINUX.ORG.RU

python: почему строки immutable?


0

0
Здравствуйте! Возник вопрос: почему согласно docs.python.org строковой тип (str()) в Python отнесен к иммутабельным последовательностям, т.е. к тем типам объектов, которые нельзя менять после их создания?

Ведь на самом деле значение строковой переменной можно менять в процессе выполнения скрипта и не один раз. Или здесь имеется ввиду какая-то другая иммутабельность? Спасибо.

anonymous
При изменении значения строковой переменной получится уже другой объект. Проверь с помощью id()
Например:
>>> s="test"
>>> id(s)
-1210535712
>>> s=s+"s"
>>> s
'tests'
>>> id(s)
-1210535616

wanderer
()
В питоне нет строковых переменных. В нём есть просто переменные, которые хранят какое то значение. Сами по себе они конечно мутабельны.
Legioner ★★★★★
()
Ответ на: комментарий от Legioner
Что за бред. В питоне есть не только переменные строкового типа, но и других типов и некоторые из них immutable.
anonymous
()
Строки (и прочие объекты) делают immutable в том числе чтобы можно было без проблем использовать их в качестве ключей в структурах типа map.

В противном случае придётся изобретать механизм уведомления контейнера об изменении ключа.

А так программист волей-неволей будет вынужден обновить этот ключ ручками.

execve
()
Ответ на: комментарий от anonymous
>Что за бред. В питоне есть

Перед тем, как обзывать чьи-то слова бредом стоит задуматься, почему они сказаны. Легионер прав, а ты нет (мягко говоря). Разницу между обьектом и его именем/названием учат видеть где-то в первом классе общеобразовательной школы.

DonkeyHot ★★★★★
()
переменная в питоне это ссылка на объект содержание объекта класса str менять нельзя -- об этом и речь можно только присвоить переменной ссылку на иной объект str
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.