我很好奇为什么float(2) is 2.0
不是True
:
>>> 2.0 is 2.0
True
>>> float(2.0) is 2.0
True
>>> float(2) is 2.0
False
>>> id(float(2))
140417897366248
>>> id(2.0)
140417897366248
>>> id(float(2)) == id(2.0)
False
>>> id(float(2)), id(2.0)
(140417897366272, 140417897366248)
在Linux上的Python 3.6.6中进行了测试。
我理解口译员在这里所做的基本原则,但是我仍然好奇在这种特殊情况下会发生什么。因此,为什么将float(2)
和2.0
作为两个单独的编译单元进行处理时,会返回相同的引用,但是当将其作为一个编译单元进行处理时,情况就不再如此。 This answer is the closest I could find,但无法回答为什么返回像这样的简单False
浮点数的问题。