Python3比较运算符

问题描述

Python 3不支持不同数据类型之间的比较。
1 < '1'将执行:

`TypeError: '<' not supported between instances of 'float' and 'str'`

但是为什么1 == '1'(或类似156 == ['foo'])返回False

解决方法

来自文档:

相等比较(==和!=)的默认行为基于 对象的身份。因此,实例的相等性比较 具有相同身份的结果导致平等,并且平等比较 具有不同身份的实例会导致不平等。一种 这种默认行为的动机是所有对象的愿望 应该是反身的(即x为y表示x == y)。

有时我们想知道两个变量是否相同,这意味着它们引用的是同一对象,例如True is True将返回True,但是另一方面,"True" is True将返回False,因此,"True" == True返回False是有意义的(我没有为使用is运算符提供了最佳用例,此示例将在Python3.8 +中引发SyntaxWarning,但这是主要思想)

,

因为检查某物是否等于其他物(或其他物)是有意义的,即使它们不是同一类型。但是,如果不是同一类型,则检查哪个“数量”较大没有多大意义,因为每种类型的“数量”定义可能不同(换句话说,“数量”可能测量物体的不同质量。

一个非代码示例:一个苹果显然不能==到一个橙色。但是,如果我们将苹果的“数量”定义为“红色”,而将橘子的“数量”定义为其“味道”,则无法检查苹果是否比橘子更>>将尝试比较这些物体的不同品质。

返回代码: 显然,4不是(或不等于)列表[4]。但是,像4 > [4]这样的支票会有什么意思?列表中的整数是“较小”还是“较大”是什么意思?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...