show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解的是优先级
- 每个运算符都有自己的优先级位置
- 逻辑运算符的优先级从高到低
- not
- and
- or
- and 和 or 这两个都是二元运算符
- 两个参数 左右位置不同
- 有影响吗?🤔
- 两个参数 左右位置不同
- 同样是两个值进行或运算
- 为什么 第一个就可以输出o
- 而 第二个 就不输出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而且有输出的函数...
- 除了 非与或之外
- 还有什么其他的运算符吗??🤔
- 下次再说 👋