Как получить доступ к исходному значению из неизменяемой переменной?

Неизменная переменная: тип переменной, в которой хранится ее оригинальная версия, если она изменена. Вопрос: как мне получить доступ к более старой версии этой переменной в Python? или на яве? или любые другие языки, которые поддерживают эту "постоянную структуру данных"? или я ошибаюсь в определении неизменяемых переменных?

После того, как я изменил переменную в, скажем, Python:

name = "nice name"
name = "bad name"

Теперь, как мне получить старое значение var name?

Примечание. Этот вопрос отличается от того, который был помечен как дубликат, поскольку этот вопрос касается расположения переменных в памяти, а другой вопрос касается области видимости переменных.

1 ответ

Решение

В вашем примере name является ссылкой, которая указывает на значение.

В вашей первой строке name указывает на неизменяемую строку "славное имя".

Затем во второй строке вы обновляете name чтобы указать на другую неизменную строку "плохое имя".

На данный момент переменная не ссылается на "хорошее имя" - поэтому она больше не доступна.

str Тип является неизменным, потому что само значение "хорошего имени" не может быть обновлено. Любая операция со строкой создаст новый блок памяти для хранения измененной строки. В вашем примере "хорошее имя" и "плохое имя" хранятся в разных блоках памяти - все, что вы обновляете, - это ссылка на блок памяти.

Другие вопросы по тегам