Skip to content

Latest commit

 

History

History
130 lines (96 loc) · 2.82 KB

151-848689-[专业选修]逻辑判断的短路问题_print返回值.sy.md

File metadata and controls

130 lines (96 loc) · 2.82 KB
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右边的 True
      • 结果为True
  • 最终
    • False or True
      • 结果为 True

图片描述

  • 先计算
    • or左边的 True
      • 结果为True
    • 不管or右边
      • 是True
      • 还是False
  • 最终
    • 结果都为True
      • 于是右边部分 被跳过
      • 不输出o
  • 这种被跳过的部分叫做被短路

短路

  • 在有水的时候
    • 电路走的是水滴这条路
    • 灯泡被短路
    • 电池被烧坏

图片描述

  • 这种现象就是短路
  • or
    • 发现左边已经是True了
    • 右边就不管了
    • 直接短路了
  • and 有这种短路现象吗?

and 的短路

  • 下图中
    • 第一句 and 右边 就被短路了

图片描述

  • 官方文档如何介绍短路呢?

官方文档

  • 蓝框中介绍了 and的短路规则
    • x and y
      • 先 计算x
        • 如果 x为False
          • 直接返回

图片描述

  • 红框中介绍了 or的短路规则
    • x or y
      • 先 计算x
        • 如果 x为True
          • 直接返回

文档说法

图片描述

  • 我们去总结

总结

  • 这次了解了and 和 or的短路规则
    • 从左到右 进行计算
    • 如果 and左边是False
      • and右边被短路
    • 如果 or左边是True
      • or右边被短路
  • 这个规则被验证了一半
    • 因为print("o")的返回值为False
    • 找不到返回值为True而且有输出的函数...

图片描述

  • 除了 非与或之外
    • 还有什么其他的运算符吗??🤔

图片描述

  • 下次再说 👋