1. >>> (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
  2. 4

为什么结果是4呢?

短路逻辑

andor 这两个逻辑运算符都遵守短路逻辑。
核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
image.png
3 and 4,3表示返回True,但是由于and运算符需要两端都是True才返回True,所以还要运算4,那么结果返回4;
3 or 4,3标识返回True,由于or运算符只要一边是True,就返回True,所以右边的不论是什么都是,True,所以省略运算,返回3;
0 and 3,0表示返回False,由于and运算符需要两端都是True才返回,所以不用预算右边了,直接就是False,所以结果返回0;
0 or 4,0表示返回False,由于or运算符只要一边是True,就返回True,所以还要运算右边的数字,那么返回4。

分析

image.png

运算优先级

  1. >>> not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
  2. 4

为什么结果是4呢?
image.png
image.png