Если я не ошибаюсь, a is b
должен вернуть True
, если a
и b
указывает на тот же объект. С двумя равными списками он возвращает False
, потому что списки представляют собой два разных списка. Я думал, что неизменные объекты не имеют этой проблемы, но когда я ставлю в:Как интернирование работает с неизменяемыми объектами?
a = (1, 2, 3)
b = (1, 2, 3)
a is b #returns false
Я подумал, что это должно вернуться True
поскольку a
и b
точку неизменного объекта, который имеет такое же значение. Почему нет a
, указывая на тот же объект, что и b
, когда я использую кортежи?
Не все неизменяемые объекты интернированы. –
http://pythontutor.com/visualize.html#code=a%20%3D%20(1,%202,%203%29%0Ab%20%3D%20(1,%202,%203%29 % 0AA% 20is% 20b% 20% 23returns% 20false & кумулятивная = истина & curInstr = 3 & heapPrimitives = истина и режим отображения = & происхождение = неавтоматического интерфейс.js & py = 3 & rawInputLstJSON =% 5B% 5D & textReferences = false –
Связано это: http://stackoverflow.com/q/6934202/4996248 –