O operador 'is' se comporta inesperadamente com flutuadores

Me deparei com um problema confuso ao testar uma unidade. O módulo está realmente lançando valores e eu quero comparar esses valores.

Há uma diferença em comparação com== eis (em parte, tomo cuidado com a diferença)

>>> 0.0 is 0.0
True   # as expected
>>> float(0.0) is 0.0
True   # as expected

Como esperado até agora, mas aqui está o meu "problema":

>>> float(0) is 0.0
False
>>> float(0) is float(0)
False

Por quê? Pelo menos o último é realmente confuso para mim. A representação interna defloat(0) efloat(0.0) deve ser igual. Comparação com== está funcionando como esperado.

questionAnswers(2)

yourAnswerToTheQuestion