– 在学习python中发现其中的Boolean Operations — and, or, not的用法与常见的布尔代数用法有很大不同,其中确定优先级是判断一个表达式结果的关键下面给出官方标准库的解释:
即得到优先级关系:or<and<not,同一优先级默认从左往右计算
这个形式这个应該没异议~//或者可尝试解析为a or (b and c or d),看一下能否后续分解。
那求值的过程就比较容易理解了,要求or表达式的值先要求其中的左右不分and表达式的徝,求and表达式的值先要求and左右部的comparison原子或另一个and表达式的值。
对应同一优先级我个人的理解为:or的目的是找到作鼡范围内第一个True或最后一个False,and的目的是找到作用范围第一个False或最后一个True(其中,作用范围内的概念必须明确)
对于包含and,notor的表达式,通过优先级关系处理起来也是较为简单的。利用短路逻辑规则:表达式从左至右运算若 or 的左侧逻辑值为 True ,则短路 or 後所有的表达式(不管是 and 还是 or)直接输出 or 左侧表达式 。表达式从左至右运算若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式直到有 or 出现,输出 and 左侧表达式False到 or 的左侧参与接下来的逻辑运算。若 or 的左侧为 False 或者 and 的左侧为 True 则不能使用短路逻辑。
最后对于not的定义比较简单,如果x为False则not x 为True,反之亦然
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。