比较Python中的假值

  • 本文关键字:Python 比较 python
  • 更新时间 :
  • 英文 :


为什么下面的表达式求值为False?比较中的两个值都是false。

print('' == [])

根据文档:

对象的类型决定对象支持的操作(例如,"它有长度吗?"),并且定义可能的值对于该类型的对象

,,还规定:

==比较两个对象的值

然而,由于Python中对象的值非常抽象,没有规范的方法来访问它,因此==的默认行为比较标识两个对象(可以认为是对象在内存中的地址),但定义为:

保证该对象在其生命周期内是唯一且不变的整数。生命周期不重叠的两个对象可以具有相同的标识。

同样重要的是,许多内置类型在各自的类型中都有自定义的比较方法,这些方法基于它们的"值"进行比较。

虽然你的两个对象都是false,但它们是不同的类型(String和List),因此,使用了比较标识的默认行为。由于两个对象不可能具有不重叠的生命周期,因此它们的身份将不同,因此'' == []将计算为False

为了比较两个对象的真值,首先按照Waket在注释中建议的将它们转换为布尔值:

bool('') == bool([])

利用Python的真值测试.

最新更新