Python中的奇怪事件

Ale*_*nko 1 python

出于某种原因,在Python 2.7的形式表达tuple > list的回报True,但tuple < listtuple == list回报False.这是为什么?

无论如何,这种观察对我来说并不是原创.

Sin*_*ion 6

tuple并且list不是同一类型.当比较不同类型的值,并且没有定义跨这些类型的比较器时,Python会做一些令人惊讶的事情.它比较了类名称字典顺序:

>>> class Coffee(object):
...     pass
... 
>>> class Tea(object):
...     pass
... 
>>> c = Coffee()
>>> t = Tea()
>>> c > t
False
>>> c == t
False
>>> c < t
True
>>> 
Run Code Online (Sandbox Code Playgroud)

值得庆幸的是,在python 3中,这消失了,比较这些类型会引发异常.


Nat*_*ate 5

来自doc:

运营商<,>,==,>=,<=,和!=比较两个对象的值.对象不必具有相同的类型.如果两者都是数字,则将它们转换为通用类型.否则,不同类型的对象总是比较不相等,并且一致但是任意地排序.