You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中False == []返回False?bool([])结果为False

为什么False == []返回False?

先看你的代码示例:

Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug 1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
print( False == [])
False
print (bool ([]))
False
print (bool (1))
True

问题核心要区分布尔上下文的隐式转换和直接相等性比较:

  • bool([])返回False,是因为Python判断对象布尔值时,会调用对象的__bool__(或__len__)方法。空列表的__len__返回0,所以在布尔上下文中被视为“假”,但这只是一种转换规则,不是说空列表本身等于布尔值False。
  • ==运算符做的是值相等性比较,Python对不同类型对象的相等性判断有明确规则:默认情况下,只有当两个对象是同一类型且内部值对应相等时,才会返回True。False是布尔类型(bool)的实例,而[]是列表类型(list)的实例,两者类型不同,直接比较时返回False。

补充个例子帮你理解:整数0的布尔值也是False,但0 == False会返回True——这是因为bool是int的子类,0和False在数值上等价;但列表和布尔没有这种继承或数值等价关系,所以空列表和False的相等性比较返回False。

内容的提问来源于stack exchange,提问作者Mudge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:58:10