比较不同类型时,CPython 2应用了一些不同的规则:
None
首先排序。- 数字先于其他类型,并且在数字之间进行比较。
- 其他类型按其类型 名称 排序,除非它们显式实现比较方法。
此外,某些类型实现自定义排序规则,并且可以拒绝所有排序尝试。例如,当您尝试对复数进行排序时,复数会引发异常;而
datetime当您尝试对其他类型进行相对排序时,对象会复数。
Python参考文档中没有对此进行记录。请参阅中的默认比较代码
object.c。这是一个实现细节,而不是您的代码应依赖的东西。该比较运算符文档状态:
大多数内置类型的其他对象比较不相等,除非它们是同一对象。在一个程序的执行过程中,可以任意选择,但是始终如一地选择是将一个对象视为小于还是大于一个对象。
目的是在对一系列混合对象进行排序时,使不同类型之间的比较稳定。
在Python
3中,比较规则得到了加强。您只能比较明确实现比较的对象。经过多年的经验得出的结论是,允许进行任意比较只会导致更多的混乱。例如,将字符串与数字与整数进行比较总是会使新手感到困惑。
您的代码将引发异常。



