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

为何bool(None and None is None)结果为False?逻辑疑问求助

问题原因解析

这是Python运算符优先级导致的结果,核心点在于is的优先级比and更高,所以你写的表达式None and None is None并不会按照你预想的(None and None) is None来执行,而是被Python解析为:

None and (None is None)

具体计算过程:

  • 第一步先执行优先级更高的None is None,结果为True
  • 第二步执行None and True,Python的and运算符是短路求值:如果第一个操作数在布尔上下文中为假(None属于假值),就直接返回第一个操作数,不会再计算第二个操作数,所以最终返回None
  • 而bool(None)的结果本身就是False,这和你调试看到的结果完全吻合

验证你原本的逻辑

如果你想实现「先计算None and None,再判断结果是否为None」的逻辑,需要手动加上括号明确执行顺序:

(None and None) is None  # 结果为True
bool((None and None) is None)  # 结果为True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:50:23