我在 python shell 中试过这个
>>> a='apple'
>>> b=11.1
>>> a>b
True
>>> a
'apple'
>>> b>a
False
有人可以向我解释一下a>b
True 是怎样的吗?当a
是一个字符串并且b
是浮动的。
我在 python shell 中试过这个
>>> a='apple'
>>> b=11.1
>>> a>b
True
>>> a
'apple'
>>> b>a
False
有人可以向我解释一下a>b
True 是怎样的吗?当a
是一个字符串并且b
是浮动的。
不同类型元素之间的顺序比较是 Python 2.x 中的一个“设计错误”,已在 Python 3 中删除(您会遇到运行时错误)。
在 3.x 之前更正它不是一个选项,因为许多现有软件对异构容器进行排序(版本 3 是第一个故意破坏向后兼容性的软件)。
在 Python 2.x 中,您可以比较<
/>
的任何内容,唯一的例外是明确禁止这样做的复数。
不同类型比较的排序结果是任意的,但至少对于 Python 解释器的给定运行是固定的,请参阅http://docs.python.org/2/reference/expressions.html#not-in。不同的非数字类型的值总是被认为是不同的。
在 Python 2 中,无法比较的类型之间的比较通常“有效”,给出毫无意义的结果。有时它很有趣:'aleph0' > float('+inf')
。但大多数时候这只是愚蠢的。
所以Python 3 删除了 this,并且'a' > 1.0
相当合理地TypeError
在它下面提出了 a 。