[Python-Dev] Decimal & lt; -& gt; float comparisons in py3k.

Antoine Pitrou solipsis at pitrou.net
Fri Mar 19 19:11:18 CET 2010


Raymond Hettinger <raymond.hettinger <at> gmail.com> writes:
> 
> The reason to prefer an exception is that decimal/float comparisons
> are more likely to be a programmer error than an intended behavior.

Not more so than float/int or decimal/int or bool/int comparisons, which all 
work.

We forbid comparisons when there is a real danger or ambiguity, such as unicode
vs. bytes. There is no such danger or ambiguity when comparing a decimal with a
float. I don't see the point of being so restrictive; Python is not Java, and
typing is not supposed to be a synonym for bondage.

> Of course there is a precedent, I can compare "120" < 140 in AWK
> and get an automatic implicit conversion

The proper precedent in this context, though, is this one (py3k):

>>> 1 < 2.0
True
>>> 1 < Decimal("2.0")
True
>>> 1 > Decimal("2.0")
False
>>> 1 > 2.0
False
>>> True > 0.5
True
>>> True > 1.5
False
>>> True > Decimal("0.5")
True
>>> True > Decimal("1.5")
False

Are you suggesting to change all the above comparisons to raise a TypeError?

cheers

Antoine.




More information about the Python-Dev mailing list