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