2

我刚刚注意到 Python 允许您将字符串值与数字进行比较:

>>> '10' > 1000
True
>>> 'a' > 1000
True
>>> 'a' > -1000
True

为什么任何字符串总是大于任何数字?

4

1 回答 1

4

在 Python 2 中,§5.3 - 比较说:

不同类型的对象,除了不同的数值类型和不同的字符串类型,从不比较相等;此类对象的排序一致但任意(因此对异构数组进行排序会产生一致的结果)。此外,某些类型(例如,文件对象)仅支持退化的比较概念,其中该类型的任何两个对象都不相等。同样,这些对象的顺序是任意但一致的。当任何操作数是复数时<<=>和运算符将引发 TypeError 异常。>=

在 Python 3 中,§4.3 - 比较说:

不同类型的对象,除了不同的数值类型,永远不会比较相等。此外,某些类型(例如,函数对象)仅支持退化的比较概念,其中该类型的任何两个对象都不相等。<<=>>=将复数与另一个内置数字类型进行比较时,当对象属于无法比较的不同类型时,或者在没有定义排序的其他情况下运算符将引发 TypeError 异常。

于 2013-10-23T21:51:30.050 回答