我刚注意到Python允许您将字符串值与数字进行比较:
>>> '10' > 1000
True
>>> 'a' > 1000
True
>>> 'a' > -1000
True
为什么任何字符串总是大于任何数字?
答案 0 :(得分:4)
在Python 2中,§5.3 - Comparisons说:
不同类型的对象,除了不同的数字类型和不同的字符串类型,从不比较相等; 此类对象按顺序排列,但任意(因此排序异构数组会产生一致的结果)。此外,某些类型(例如,文件对象)仅支持简并比较概念,其中该类型的任何两个对象都是不相等的。同样,这些对象是任意但一致的。当任何操作数是复数时,
<
,<=
,>
和>=
运算符将引发TypeError异常。
在Python 3中,§4.3 - Comparisons说:
除了不同的数字类型之外,不同类型的对象永远不会相等。此外,某些类型(例如,函数对象)仅支持简并比较概念,其中该类型的任何两个对象都是不相等的。 将复数与其他内置数字类型进行比较时,
<
,<=
,>
和>=
运算符会引发TypeError异常, 当对象具有无法比较的不同类型时,或者在没有定义排序的其他情况下。