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