2

我在 python shell 中试过这个

>>> a='apple'
>>> b=11.1
>>> a>b
True
>>> a
'apple'
>>> b>a
False

有人可以向我解释一下a>bTrue 是怎样的吗?当a是一个字符串并且b是浮动的。

4

2 回答 2

5

不同类型元素之间的顺序比较是 Python 2.x 中的一个“设计错误”,已在 Python 3 中删除(您会遇到运行时错误)。

在 3.x 之前更正它不是一个选项,因为许多现有软件对异构容器进行排序(版本 3 是第一个故意破坏向后兼容性的软件)。

在 Python 2.x 中,您可以比较</>的任何内容,唯一的例外是明确禁止这样做的复数。

不同类型比较的排序结果是任意的,但至少对于 Python 解释器的给定运行是固定的,请参阅http://docs.python.org/2/reference/expressions.html#not-in。不同的非数字类型的值总是被认为是不同的。

于 2013-10-31T17:59:46.330 回答
1

在 Python 2 中,无法比较的类型之间的比较通常“有效”,给出毫无意义的结果。有时它很有趣:'aleph0' > float('+inf')。但大多数时候这只是愚蠢的。

所以Python 3 删除了 this,并且'a' > 1.0相当合理地TypeError在它下面提出了 a 。

于 2013-10-31T18:01:21.357 回答