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,只能通过序列类型(下)的支持。
网站建设开发|APP设计开发|小程序建设开发