Python 3不支持不同数据类型之间的比较。
1 < '1'
将执行:
`TypeError: '<' not supported between instances of 'float' and 'str'`
但是为什么1 == '1'
(或类似156 == ['foo']
)返回False
?
答案 0 :(得分:1)
来自文档:
相等比较(==和!=)的默认行为基于 对象的身份。因此,实例的相等性比较 具有相同身份的结果导致平等,并且平等比较 具有不同身份的实例会导致不平等。一种 这种默认行为的动机是所有对象的愿望 应该是反身的(即x为y表示x == y)。
有时我们想知道两个变量是否相同,这意味着它们引用的是同一对象,例如True is True
将返回True
,但是另一方面,"True" is True
将返回False
,因此,"True" == True
返回False
是有意义的(我没有为使用is运算符提供了最佳用例,此示例将在Python3.8 +中引发SyntaxWarning
,但这是主要思想)
答案 1 :(得分:0)
因为检查某物是否等于其他物(或其他物)是有意义的,即使它们不是同一类型。但是,如果不是同一类型,则检查哪个“数量”较大没有多大意义,因为每种类型的“数量”定义可能不同(换句话说,“数量”可能测量物体的不同质量。
一个非代码示例:一个苹果显然不能==
到一个橙色。但是,如果我们将苹果的“数量”定义为“红色”,而将橘子的“数量”定义为其“味道”,则无法检查苹果是否比橘子更>
。 >
将尝试比较这些物体的不同品质。
返回代码:
显然,4
不是(或不等于)列表[4]
。但是,像4 > [4]
这样的支票会有什么意思?列表中的整数是“较小”还是“较大”是什么意思?