在线文档教程

Types: 3. Comparisons

3. Comparisons

所有对象都支持比较操作。它们都具有相同的优先级(这比布尔操作的优先级高)。比较可以任意链接; 例如x < y <= z等同于x < y and y <= z,除了y只被评估一次(但是在两种情况下,当zx < y被发现为假时根本不被评估)。

本表总结了比较操作:

手术含义笔记
<严格小于
<=小于或等于
严格大于
=大于或等于
==等于
!=不等于(1)
对象身份
不是否定对象身份

注释:

  • !=也可以编写<>,但这是为了向后兼容而保留的过时使用。新代码应该始终使用!=。

不同类型的对象,除了不同的数字类型和不同的字符串类型,永远不会相等; 这样的对象排序一致但任意(排序异构数组产生一致的结果)。此外,某些类型(例如,文件对象)仅支持简单的比较概念,其中任何两个类型的对象都不相等。再次,这样的对象是任意排列但一致的。的<,<=,>和>=运营商将提高一个TypeError当任何操作数是复数例外。

除非类定义__eq__()方法或__cmp__()方法,否则通常将类的不同实例比较为不相等。

一个类的实例不能相对于同一类的其他实例,或其他类型的对象进行排序,除非类定义要么足够的富比较方法(__lt__()__le__()__gt__(),和__ge__())或__cmp__()方法。

CPython实现细节:除数字以外的不同类型的对象按其类型名称排序; 不支持正确比较的相同类型的对象按其地址排序。

具有相同优先级的语法两个操作,in并且not in,只能通过序列类型(下)的支持。