Я столкнулся с запутанной проблемой, когда модуль тестировал модуль. Модуль фактически отличает значения, и я хочу сравнить эти значения.
Существует разница по сравнению с == и is (отчасти, я остерегаюсь разницы)
>>> 0.0 is 0.0
True # as expected
>>> float(0.0) is 0.0
True # as expected
Как и ожидалось до сих пор, но вот моя "проблема":
>>> float(0) is 0.0
False
>>> float(0) is float(0)
False
Почему? По крайней мере, последнее меня действительно сбивает с толку. Внутреннее представление float(0) и float(0.0) должно быть равным. Сравнение с == работает как ожидалось.