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

为什么Python中0 or 3返回3,3 and 0返回0?

Python 逻辑运算符or/and返回规则

Python 中的or、and运算符采用短路求值逻辑,且最终返回的是第一个能决定整个表达式结果的原始运算对象,而非单纯的True/False布尔值。

or 运算规则

  • 从左到右依次判断每个运算对象的布尔真值
  • 遇到第一个布尔值为True的对象时,直接返回该对象,不再计算后续的运算对象
  • 如果所有运算对象的布尔值都为False,返回最后一个对象

你给出的测试代码运行结果解释如下:

print(3 or 0)  # 3的布尔值为True,直接返回3
print(0 or 3)  # 0的布尔值为False,继续判断下一个,3为True,返回3
print(3 or 10) # 3的布尔值为True,直接返回3
print(10 or 3) # 10的布尔值为True,直接返回10

and 运算规则

  • 从左到右依次判断每个运算对象的布尔真值
  • 遇到第一个布尔值为False的对象时,直接返回该对象,不再计算后续的运算对象
  • 如果所有运算对象的布尔值都为True,返回最后一个对象

你提到的3 and 0返回0的解释:

print(3 and 0)  # 3的布尔值为True,继续判断下一个,0为False,返回0
print(0 and 3)  # 0的布尔值为False,直接返回0
print(3 and 10) # 所有对象都为True,返回最后一个10

常见布尔值为False的对象参考

  • 数值类:0、0.0、None
  • 空序列:''(空字符串)、[](空列表)、()(空元组)
  • 空映射:{}(空字典)
  • 自定义对象中定义__bool__/__len__方法返回False/0的实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:45:03