购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.13 布尔运算符 and or not

条件运算符 > < >= <= == != 可用于组成简单条件,例如 grade>=60 。要将简单条件进行组合,构成更复杂的条件,可以使用布尔运算符 and or not

布尔运算符 and

要在执行控制语句的套件之前确保两个条件 都为 True ,可以使用布尔运算符 and 来组合条件。下面的代码定义了两个变量,当且仅当两个简单条件都为 True 时,测试条件为 True ,如果两个简单条件中的任何一个(或两个)为 False ,则整个 and 表达式的值为 False

000

if 语句包含以下两个简单条件:

首先评估 and 运算符左侧的简单条件,因为 == 的优先级高于 and 。如有必要,接下来评估 and 右侧的简单条件,因为 >= 也具有比 and 更高的优先级。(后面会简要讨论为什么 只有 当左侧条件为 True 时,才会评估 and 运算符右侧的条件。)当且仅当两个简单条件 都为 True 时,整个 if 语句的条件为 True 。通过添加冗余括号可以使组合条件更清晰,如下:

000

下表称为真值表,通过显示 表达式1 表达式2 的值为 False True 的所有四种可能组合来总结运算符 and 的运算规则。

000

布尔运算符 or

布尔运算符 or 可以测试两个条件中的一个 两个是否为 True 。在下面的代码中,如果其中一个 两个简单条件为 True 时,整个测试条件为 True ,当且仅当两个简单条件均为 False 时,整个测试条件为 False

000

代码段 [6] 同样包含两个简单的条件:

运算符 and 的优先级高于 or 。下面的真值表总结了布尔运算符 or 的运算规则。

000

利用短路提高性能

一旦知道整个条件是否为 False ,Python就会停止计算 and 表达式。类似地,一旦知道整个条件是否为 True ,Python就会停止计算 or 表达式。这种机制称为 短路 。因此在条件

000

中,如果 gender 不等于 'Female' ,立即停止计算,因为整个表达式的值一定为 False ;否则继续执行,如果 age 大于或等于 65 ,整个表达式的值为 True

同样,在条件

000

中,如果 semester_average 大于或等于 90 ,立即停止计算,因为整个表达式的值一定为 True ;否则继续执行,因为如果 final_exam 大于或等于 90 ,整个表达式的值仍然可以是 True

在使用 and 表示条件时,应该将其值更有可能为 False 的条件放在最左边。同样,在使用运算符 or 的表达式中,应该将其值更有可能为 True 的条件放在最左边。这些技巧可以减少程序的执行时间。

布尔运算符 not

布尔运算符 not 表示“取反”,即 True 变为 False False 变为 True not 只有 一个 操作数,是 一元运算符 。如果原始条件(没有 not 运算符)为 False ,可以在条件之前放置 not 运算符来选择执行该路径,例如:

000

通常,我们会避免使用 not ,而是以更“自然”或方便的方式表达条件。例如,上面代码中的 if 语句也可以写成如下形式:

000

下表是 not 运算符的真值表。

000

下表从上到下按优先级的降序显示了运算符的优先级和结合性。 Hff+DnlQoGwqeI/p3tX79HaGAS6cI5uFqjJ8K+O7uienCzu+yLlKWKDnkbHrIq0u

000
点击中间区域
呼出菜单
上一章
目录
下一章
×