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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.