Python的比较操作

所有对象都支持比较操作。它们都具有相同的优先级(高于布尔操作)。比较可以任意链接;例如,x < y < = z相当于x < y and y < = z,只是y只计算一次(但这两种情况在x < y为假时都不会计算z)。

下表汇总了比较操作:

操作 含义
< 严格地小于  
<= 小于或等于  
> 严格地大于  
>= 大于或等于  
== 等于  
!= 不等于 (1)
is 对象的ID  
is not 不同的对象ID  

注:

  1. !=也可以写成<>,但这只是用于保持向后兼容性的用法。新的代码应该一直使用!=

不同类型的对象,不同的数值和字符串类型除外,比较结果永远不会相等;这类对象排序的结果永远一致但是顺序却是随机的(使得异构数组的排序可以生成一致的结果)。此外,某些类型(例如,文件对象)只支持退化的比较概念,该类型的任何两个对象都不相等。同样,这类对象排序的顺序是随机的但是会永远是一致的。当任何一个操作数是复数时,< = >> =运算符会引发TypeError异常。

类的非同一个实例比较时通常不相等,除非该类定义__eq__()__cmp__()方法。

一个类的实例通常不能与同一个类的其它实例或者其他类型的对象排序,除非该类定义足够丰富的比较方法(__ge__()__le__()__gt__()__lt__())或__cmp__()方法。

CPython 的实现细节:除数值以外不同类型的对象按它们的类型名称进行排序;不支持合适比较的相同类型的对象按它们的地址进行排序。

还有两个具有相同优先级的操作innot in只支持序列类型 (见下文)。

如果引用本站的原创文章,请注明原文链接:,本站保留追究责任的权利!

发表评论