我尝试(在Python 2.7.6中):
() > '' > [] > {} > 0 > None
它返回
True
为什么会这样?
答案 0 :(得分:1)
这是历史事故。
它在Python 3中修复:
>>> () > '' > [] > {} > 0 > None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: tuple() > str()
或者换句话说,订单已经确定,但没有特定的逻辑/技术原因,为什么他们应该以这种方式订购而不是以不同的方式订购。为了避免混淆,在Python 3中不再以这种方式比较类型。
在Python 2文档中,我只能找到:
不同类型的对象,除了不同的数字类型和不同的字符串类型,从不比较相等;这些对象是一致但任意排序的(因此排序异构数组会产生一致的结果)。