|
|

楼主 |
发表于 2016-10-9 23:21:33
|
显示全部楼层
if a and b:#如果a是false,那么跳过b的判断,结果直接false
if a or b:#如果a为true,那么跳过b的判断,直接true
例子: >>> not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
4
>>> (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
4
>>> (0) or (0) or (4) or (6) or (9)
4
个人理解:在这个例子中首先是逻辑判断的优先级问题,not > and > or
然后是and 的短路逻辑。因为在and 中,两个为Ture才是真正的Ture .
在 0 and 1 中 ,如果第一个值是0 也就是False ,系统会认为反正第二个值不管是什么都会返回一个 0 (False),在 3 and 4 中 ,第一个值是 3 也就是Ture,系统就会继续向下读值,也就会返回 4 了。
然后是or 的短路逻辑。因为在or中,一个为Ture就是Ture了。
在(0) or (0) or (4) or (6) or (9)中,首先遇到 0 ,0 是False ,接下来的值有可能是Ture,所以会继续向下读,当遇到 4 的时候,为Ture,系统就会停止判断,直接将为Ture的值返回。
|
|