Comparisons of incompatible types
TomF
tomf.sessile at gmail.com
Mon Dec 6 12:16:10 EST 2010
On 2010-12-06 09:04:00 -0800, Peter Otten said:
> TomF wrote:
>
>> I'm aggravated by this behavior in python:
>>
>> x = "4"
>> print x < 7 # prints False
>>
>> The issue, of course, is comparisons of incompatible types. In most
>> languages this throws an error (in Perl the types are converted
>> silently). In Python this comparison fails silently. The
>> documentation says: "objects of different types *always* compare
>> unequal, and are ordered consistently but arbitrarily."
>>
>> I can't imagine why this design decision was made. I've been bitten by
>> this several times (reading data from a file and not converting the
>> numbers before comparison). Can I get this to throw an error instead
>> of failing silently?
>
> This change would break a lot of code, so it could not be made within the
> 2.x series. However:
>
> Python 3.1.1+ (r311:74480, Nov 2 2009, 15:45:00)
> [GCC 4.4.1] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> "4" < 7
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: unorderable types: str() < int()
Thanks. I was hoping there was something I could do for 2.x but I
suppose this will have to do.
But I'm mystified by your statement, "this change would break a lot of
code". Given that the semantics are virtually random, how could code
depend on this?
-Tom
More information about the Python-list
mailing list