为什么是`()> ''> []> {}> 0>在Python 2.7中没有?

时间:2014-12-02 17:09:13

标签: python

我尝试(在Python 2.7.6中):

() > '' > [] > {} > 0 > None

它返回

True

为什么会这样?

1 个答案:

答案 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文档中,我只能找到:

  

不同类型的对象,除了不同的数字类型和不同的字符串类型,从不比较相等;这些对象是一致但任意排序的(因此排序异构数组会产生一致的结果)。