Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0164
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次了解的是优先级
- 每个运算符都有自己的优先级位置
- 逻辑运算符的优先级从高到低
- not
- and
- or
- and 和 or 这两个都是二元运算符
- 两个参数 左右位置不同
- 有影响吗?🤔
- 两个参数 左右位置不同
print("o") or True
True or print("o")
- 同样是两个值进行或运算
- 为什么 第一个就可以输出o
- 而 第二个 就不输出o 呢?
- 首先 我们要明确 print的 返回值是多少
print(print("o"))
- print函数的返回值 是
- None
- 啥也不是
- 啥也不是 None
- 对应的 布尔值 是多少?
bool(None)
- None所对应的 布尔值 是
- False
- 所以 print("o") 对应的布尔值 是多少?
bool(print("o"))
- print("o") 对应的布尔值
- print("o") 对应的布尔值是 False
- 先计算
- or左边的 print("o")
- 输出了o
- 结果为False
- or左边的 print("o")
- 再计算
- or右边的 True
- 结果为True
- or右边的 True
- 最终
- False or True
- 结果为 True
- False or True
- 先计算
- or左边的 True
- 结果为True
- 不管or右边
- 是True
- 还是False
- or左边的 True
- 最终
- 结果都为True
- 于是右边部分 被跳过
- 不输出o
- 结果都为True
- 这种被跳过的部分叫做被短路
- 在有水的时候
- 电路走的是水滴这条路
- 灯泡被短路
- 电池被烧坏
- 这种现象就是短路
- or
- 发现左边已经是True了
- 右边就不管了
- 直接短路了
- and 有这种短路现象吗?
- 下图中
- 第一句 and 右边 就被短路了
- 官方文档如何介绍短路呢?
- 蓝框中介绍了 and的短路规则
- x and y
- 先 计算x
- 如果 x为False
- 直接返回
- 如果 x为False
- 先 计算x
- x and y
- 红框中介绍了 or的短路规则
- x or y
- 先 计算x
- 如果 x为True
- 直接返回
- 如果 x为True
- 先 计算x
- x or y
- 我们去总结
- 这次了解了and 和 or的短路规则
- 从左到右 进行计算
- 如果 and左边是False
- and右边被短路
- 如果 or左边是True
- or右边被短路
- 这个规则被验证了一半
- 因为print("o")的返回值为False
- 找不到返回值为True而且有输出的函数...
- 除了 非与或之外
- 还有什么其他的运算符吗??🤔
- 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。










