Python逻辑运算符¶
| 逻辑运算符 | 含义 | 基本格式 | 说明 |
and |
逻辑与 | a and b |
当a和b两个表达式都为真时, 结果才为真, 否则为假 |
or |
逻辑或 | a or b |
当a和b两个表达式都为假时, 结果才为假, 否则为真 |
not |
逻辑非 | not a |
如果a为真, 结果为假; 如果a为假, 结果为真 |
逻辑运算符有个有趣的特征: 只做必要的计算.
and和or不一定会计算右边的值, 有时候只计算左边表达式的值就能得到最终结果.
例如, 仅当x和y都为真时, 表达式x and y才为真. 因此, 如果x为假, 这个表达式立即返回假, 而不关心y.
实际上, 如果x为假, 这个表达式将返回x, 否则返回y.
这种行为称为短路逻辑(或者延迟求值): 逻辑运算符, 在有些情况下将”绕过”第二个值(如果第一个 值就可以确定表达式的值, 则就不管第二个值了).
注意, 这意味着位于逻辑运算符后面的代码(如函数调用)可能根本就不会执行.
对于and运算符, 两边的值都为真时最终结果才为真, 但是只要其中一个值为假, 那么最终结果就是假, 所以Python按照下面的规则执行and运算:
- 如果左边表达式的值为假, 那么就不用计算右边表达式的值了, 因为不管右边表达式的值是什么, 都不会影响最终结果, 最终结果都是假, 此时
and会把左边表达式的值作为最终结果;- 如果左边表达式的值为真, 那么最终结果此时是不确定的,
and会继续计算右边表达式的值, 并将右边表达式的值作为最终结果.
对于or运算符, 情况是类似的, 两边的值都为假时最终结果才为假, 只要其中有一个值为真, 那么最终结果就是真, 所以Python按照下面的规则执行or运算:
- 如果左边表达式的值为真, 那么就不用计算右边表达式的值了, 因为不管右边表达式的值是什么, 都不会影响最终结果, 最终结果都是真, 此时
or会把左边表达式的值作为最终结果;- 如果左边表达式的值为假, 那么最终结果此时是不确定的,
or会继续计算右边表达式的值, 并将右边表达式的值作为最终结果.
另外, and和or运算符会将其中一个表达式的值作为最终结果, 而不是将True或者False作为最终结果.