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.