Python 短路逻辑与运算符优先级详解
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
在 Python 中,
and、or、not 这三个逻辑运算符的行为常常让人困惑,尤其是当它们组合在一起时。本文将紧扣题目代码,不超纲,一步步解释为什么程序会输出这些结果,帮助你真正理解背后的规则。一、必须掌握的三条基础规则
规则1:真假值判断(仅本题涉及)
- 假值(falsy):
0、False
- 真值(truthy):除假值外的所有值,如
1、3、4、5……都是真
✅ 本题只用到数字和布尔值,无需考虑空字符串、空列表等。
规则2:and 和 or 返回的是“原值”,不是 True/False
这是最容易出错的地方!
A and B:- 如果
A是 假 → 结果 =A(不再计算 B,称为“短路”) - 如果
A是 真 → 结果 =B
A or B:- 如果
A是 真 → 结果 =A(短路,不看 B) - 如果
A是 假 → 结果 =B
✅ 记住:返回的是参与运算的那个实际值,比如
3 and 4 返回 4,不是 True。规则3:运算符优先级(从高到低)
- 先算所有
not
- 再算所有
and
- 最后算
or
如果有括号 ( ),则先算括号内的内容,优先级最高。
二、逐行解析题目代码
第1行:带括号的表达式
因为有括号,每个部分独立计算:
(not 1)→1是真 →not 1=False
(0 and 1)→0是假 → 结果 =0(短路)
(3 and 4)→3是真 → 结果 =4
(5 and 6)→5是真 → 结果 =6
(7 and 8 and 9):- 先算
7 and 8→7真 → 得8 - 再算
8 and 9→8真 → 得9
现在整个表达式变成:
or 从左到右计算:False or 0→False是假 → 结果 =0
0 or 4→0是假 → 结果 =4
- 后面不再计算(因为
4是真,or遇真即停)
✅ 输出:
4验证基础规则的几行
输出依次为:
完全符合规则2。
第2个关键表达式:无括号
没有括号! 必须按优先级计算。
步骤1:先算 not
not 1→False
表达式变为:
步骤2:再算所有 and(从左到右)
0 and 1→0
3 and 4→4
5 and 6→6
7 and 8 and 9→7 and 8=8,8 and 9=9
现在变成:
步骤3:最后算 or(从左到右)
False or 0→0
0 or 4→4(短路,停止)
✅ 输出:
4💡 为什么和有括号的结果一样?因为在这个特定例子中,括号分组和优先级分组恰好得到相同的子表达式。但这只是巧合! 换一个例子可能就不同了。
最后几行:综合练习
重点看这行:
按优先级逐步计算:
- 先算
not:not 2→2是真 → 结果 =False
- 再算
and:1 and False→1是真 → 结果 =False
- 最后算
or:0 or False→0是假 → 结果 =False
✅ 输出:
False最后一行:
三、为什么会出现这些结果?——核心原因总结
- 短路求值
and一旦遇到假值就立即返回它,不再往后看or一旦遇到真值就立即返回它,不再往后看
- 返回原值,不是布尔值
3 and 4返回4,不是True- 这是 Python 的设计特点,也是很多初学者误解的根源
- 优先级决定计算顺序
- 没有括号时,
not先算,and次之,or最后 - 有括号时,括号内优先
- 从左到右结合
- 相同优先级的运算符(如多个
or)从左往右依次计算
四、一句话记住
not 最急,and 次之,or 最慢;and 怕假,or 爱真;返回原值,不是真假。
只要掌握这三条规则,你就能准确预测任何类似表达式的结果,不再“猜输出”!
- 作者:神秘人
- 链接:https://blog.tianjiaji.top//url/27b183c0-6139-809c-8a84-e8370d5307b0
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。










