Я столкнулся с запутанной проблемой, когда модуль тестировал модуль. Модуль фактически отличает значения, и я хочу сравнить эти значения.
Существует разница по сравнению с ==
и 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)
должно быть равным. Сравнение с ==
работает как ожидалось.