Страницы

Поиск по вопросам

вторник, 13 ноября 2018 г.

Неизменяемость в python

Не могу толком понять в python тему неизменяемость. К примеру: a = 5 a = 10 Вывод 10, т.е. переменная a уже не 5 а 10, как-бы изменилась. Или здесь что-то другое имеется ввиду?


Ответ

В среде Python-программистов есть такое изречение "В python-е все есть объект".
Когда программист присваивает что-то в переменную, то он присваивает не само значение, а ссылку на объект. В вашем примере сначала создается объект со значением 5, берется его адрес(грубо, очень грубо) и присваивается переменной a. Затем создается объект в котором хранится 10, берется его адрес и этот адрес присваивается в a. Далее, объект со значением 5 живет до тех пор, пока его garbage collector не решит отправить к праотцам.
Еще раз, все операции в Python-е ведутся относительно объектов. Когда говорят о mutable или immutable то имееют ввиду свойства объектов!
Возможно Вам просто непонятна концепция "указатель" и поэтому приведу аналогию из мира людей: Когда Вы берете в руки смартфон и звоните к Ане, чтобы поговорить, то вы говорите не с номером телефона и не со смартфоном, а с Аней. Номер телефона всего лишь "указатель" на Аню. А смартфон это переменная, которая хранит указатель на Аню. И чтобы получить доступ к Ане вы используете переменнную в которой хранится номер Ани и только тогда вы получаете доступ к ней.

Комментариев нет:

Отправить комментарий