本篇我们将会学习 Python 逻辑运算符,以及如何使用它们组合多个判断条件。
有些时候我们想要一次检查多个判断条件,为此可以使用逻辑运算符(logical operator)。
Python 支持以下三种逻辑运算符:
逻辑与(and)运算符用于检查两个条件是否同时为 True:
a and b
如果两个条件都为 True,返回 True;如果任何一个条件为 False,返回 False。
以下示例使用 and 运算符组合了两个比较 price 的条件:
>>> price = 9.99 >>> price > 9 and price < 10 True
结果返回了 True,因为 price 大于 9 并且小于 10。
以下示例返回了 False,因为 price 没有大于 10:
>>> price > 10 and price < 20 False
以上示例中的 price > 10 返回了 False,第二个条件 price < 20 返回了 True。
下表列出了 and 运算符组合两个条件时的结果:
a | b | a and b |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
从上表中可以看出,只有两个条件都为 True 时表达式 a and b 才会返回 True。
与 and 运算符类似,逻辑或(or)运算符也可以检查多个判断条件。不同之处在于,只要有一个条件为 True,or 运算符就会返回 True;否则,返回 False:
a or b
下表列出了 or 运算符组合两个条件时的结果:
a | b | a or b |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
只有当两个条件都为 False 时,or 运算符才会返回 False。
以下示例演示了 or 运算符的作用:
>>> price = 9.99 >>> price > 10 or price < 20 >>> True
在以上示例中,price < 20 结果为 True,因此整个表达式返回了 True。
以下示例返回了 False,因为两个条件都为 False:
>>> price = 9.99 >>> price > 10 or price < 5 False
逻辑非(not)运算符用于将后面的判断条件取反,True 变成 False,False 变成 True。
not a
如果判断条件为 True,not 运算符返回 False;反之亦然。
下表列出了 not 运算符的结果:
a | not a |
---|---|
True | False |
False | True |
以下示例使用了 not 运算符,因为 price > 10 结果为 False,所以 not price > 10 返回 True:
>>> price = 9.99 >>> not price > 10 True
以下示例将 not 运算符和 and 运算符进行了组合:
>>> not (price > 5 and price < 10) False
在以上示例中,Python 按照以下顺序计算表达式的值:
以上示例涉及了一个重要的概念,称为逻辑运算符的优先级。
当我们同时在一个表达式中混合使用了不同的逻辑运算符,Python 将会按照一定的优先级执行这些运算。
以下是逻辑运算符的优先级:
Operator | Precedence |
---|---|
not | High |
and | Medium |
or | Low |
Python 基于以上优先级将不同的操作数分组运算,优先级最高的最先执行,然后依次执行优先级更低的操作。
如果多个逻辑运算符的优先级相同,Python 将会按照从左至右的顺序进行计算:
表达式 | 等价表达式 |
---|---|
a or b and c | a or (b and c) |
a and b or c and d | (a and b) or (c and d) |
a and b and c or d | ((a and b) and c) or d |
not a and b or c | ((not a) and b) or c |