短路逻辑和运算符优先级
短路逻辑 or and
为什么这段代码的输出结果是“4”?
(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) #输出结果 4
这个就和本章的短路逻辑有关
什么是短路逻辑?
短路逻辑的核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
举个例子
进行以下操作
3 and 4 #输出结果 4 3 or 4 #输出结果 3 #and运算符的要求是 左右两个操作数的真值测试结果只有同时为True 才会显示最后一个True值 当有一个值是False时,将直接输出False的值,对后面的值也不会进行运算 #or运算符 左右两边有一个值为Ture,输出的值也就为Ture 左边有一个值为Ture,右边就不用运算
总结:从Python的角度来看,他根本就没有必要将最后的结果判断完在汇报,更高效的方法是直接将影响结果的关键值扔出来就可以了,这就是所谓的短路逻辑。
解释1中的代码
对于这种复杂的表达式
有小括号的先算小括号里的
上下结果呼应 (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) false 0 4 6 9 现在我们遇到的表达式就变成了这样 false or 0 or 4 or 6 or 9 #运行结果 4
运算符优先级
动动脑,下面这个运算结果是什么?
[doubt h2=”not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9″]正确答案:4[/doubt]
Python运算符的优先级讲的是
运算表达式时执行的先后顺序
先执行具有较高优先级的运算符,然后在执行较低优先级的运算符
例如小学就学到的先乘除后加减,这就是优先级
下图列出了Python的从低到搞得运算符优先级
注意:运算符1是比2要小的
想优先运算可加个小括号