Как получить доступ к исходному значению из неизменяемой переменной?
Неизменная переменная: тип переменной, в которой хранится ее оригинальная версия, если она изменена. Вопрос: как мне получить доступ к более старой версии этой переменной в Python? или на яве? или любые другие языки, которые поддерживают эту "постоянную структуру данных"? или я ошибаюсь в определении неизменяемых переменных?
После того, как я изменил переменную в, скажем, Python:
name = "nice name"
name = "bad name"
Теперь, как мне получить старое значение var name
?
Примечание. Этот вопрос отличается от того, который был помечен как дубликат, поскольку этот вопрос касается расположения переменных в памяти, а другой вопрос касается области видимости переменных.
1 ответ
В вашем примере name
является ссылкой, которая указывает на значение.
В вашей первой строке name
указывает на неизменяемую строку "славное имя".
Затем во второй строке вы обновляете name
чтобы указать на другую неизменную строку "плохое имя".
На данный момент переменная не ссылается на "хорошее имя" - поэтому она больше не доступна.
str
Тип является неизменным, потому что само значение "хорошего имени" не может быть обновлено. Любая операция со строкой создаст новый блок памяти для хранения измененной строки. В вашем примере "хорошее имя" и "плохое имя" хранятся в разных блоках памяти - все, что вы обновляете, - это ссылка на блок памяти.