
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.