Python中的比较操作也比较奇葩呀!
- 比较操作符是没有优先级的,不比c语言
- 可以是一个串,a<b<c等价于a<b and b<c
- 不同类型的值也可以判等,只不过不同类型总是不相等
- 不同类型的值使用<,>等符号时,会报错,type error
- NaN值比较特殊,任何值与它相比,都会是False
- string和bytes是不能比较的
- tuple和list也可以判断相等和比较,但是按照顺序依次比较,另短的更小
- map(dict)可以判断相等,除非他们的key,value都相等,但不能比较大小
- set的比较操作意味着是否是子集或超集
- in,not in 是判断是否是成员,基本所有都可以用了
- 自定义的类,如果实现了__contains_()函数,in会根据这个函数判断,相当于y.__contains(x)
- 自定义的类,如果实现了__iter__()和一个老的方式__getitem__()也会影响in的判断
- is,not is 就是判断两个object是否相等了
参考
https://docs.python.org/3.1/reference/expressions.html#in
看完了发现3.8的文档更好些
https://docs.python.org/3.8/reference/expressions.html#in