>>> (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
4
短路逻辑
and
和 or
这两个逻辑运算符都遵守短路逻辑。
核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
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。
分析
运算优先级
>>> not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
4
为什么结果是4呢?