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

Python中None在逻辑表达式中的求值规则?为何示例输出None?

Python中None在逻辑表达式中的求值规则

Python里的逻辑运算符and、or遵循短路求值原则,并且返回的是操作数本身,而非强制转换后的布尔值。同时,None在布尔判定中会被视为False,这两点是理解示例差异的核心。

示例1分析

s: str = None
b: bool = True
b = (s != None) and (s != "some-not-allowed-value")
print(b)  # 输出False

这里(s != None)的结果是布尔值False,and运算符遇到第一个为假的操作数时,会直接返回该值(短路,不再执行后续表达式),因此b被赋值为False,符合直觉。

示例2分析

s: str = None
b: bool = True
b = (s) and (s != "some-not-allowed-value")
print(b)  # 输出None

这里第一个操作数是None,在布尔判定中它属于“假值”。and运算符遇到假值时直接返回该操作数本身,不会执行后面的(s != "some-not-allowed-value"),因此b被赋值为None,而非布尔值。

关键总结

  • None在布尔上下文中等价于False,但它本身不是布尔类型。
  • and/or不会将结果强制转为布尔值,而是返回实际参与运算的操作数:
    • and:如果第一个操作数为假值,返回第一个操作数;否则返回第二个操作数。
    • or:如果第一个操作数为真值,返回第一个操作数;否则返回第二个操作数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:01:03