2012-05-17 2 views
-1

Этот вопрос мотивируется этим this question, которые я и неправильно истолковывать и при условии неудачного ответа (я его удалил)Повторяется ли идентичное присвоение, ведущее к тому же значению id()?

перечитывает http://docs.python.org/library/functions.html#id и просто попытался это в Python:

>>> a = 3 
>>> id(a) 
5392456 

>>> a = 3 
>>> id(a) 
5392456 

повторен несколько раз больше ...

Тот факт, что эти числа (то есть адреса объекта в памяти) равны , одинаково зависит от реализации, и нет гарантировано, что правильный? Они могут быть разными, не так ли? Я понимаю, что каждый раз, когда я делаю это простое назначение, я создаю новый объект и привязываю его к переменной идентификатор, поэтому I не может предположить, что они будут помещены в то же место в память.

Правильно ли это понимание? Если да, есть ли исключения?

+1

Теперь попробуйте с помощью 'a = 12345' – interjay

+1

Реализация бесплатна, чтобы никогда не ставить что-либо. – geoffspear

+0

@interjay ok, так что вы подтверждаете, что мое понимание этого правильно, не так ли? И тот факт, что мой пример дал то же значение памяти, не был гарантирован. – Levon

ответ

0

Вы можете сделать это предположение, но время для неизменяемых типов, например int, а не создавать новый объект, ваша переменная может просто ссылаться на неизменяемый объект, если он уже существует. Когда вы выполняете задание, вы создаете ссылку на объект. Этот объект может быть уже создан или может быть создан.

+0

, так что я никогда не смогу ** предположить ** о том, что значение одно и то же, верно? (Это, по крайней мере, то, что я хотел подтвердить с моим вопросом) – Levon

+1

, если вы присваиваете значение say 3 переменной 'a', переменная ссылается на объект' int' значения 3. Вы можете иметь более одного объекта с одинаковым значением но другой объект 'id'. Что вам нужно, так это то, что когда вы используете переменную 'a', у вас есть значение 3, так как виртуальная виртуальная машина python с объектом зависит от реализации, и вы должны ** никогда не рассчитывать на то, что они одинаковы. – cobie

Смежные вопросы