为什么一个字符串总是“大于”一个数字?

时间:2013-10-23 21:49:05

标签: python

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

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

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

1 个答案:

答案 0 :(得分:4)

在Python 2中,§5.3 - Comparisons说:

  

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

在Python 3中,§4.3 - Comparisons说:

  

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