Python逻辑运算符

Python逻辑运算符
逻辑运算符 含义 基本格式 说明
and 逻辑与 a and b 当a和b两个表达式都为真时, 结果才为真, 否则为假
or 逻辑或 a or b 当a和b两个表达式都为假时, 结果才为假, 否则为真
not 逻辑非 not a 如果a为真, 结果为假; 如果a为假, 结果为真

逻辑运算符有个有趣的特征: 只做必要的计算.

andor不一定会计算右边的值, 有时候只计算左边表达式的值就能得到最终结果.

例如, 仅当xy都为真时, 表达式x and y才为真. 因此, 如果x为假, 这个表达式立即返回假, 而不关心y. 实际上, 如果x为假, 这个表达式将返回x, 否则返回y.

这种行为称为短路逻辑(或者延迟求值): 逻辑运算符, 在有些情况下将”绕过”第二个值(如果第一个 值就可以确定表达式的值, 则就不管第二个值了).

注意, 这意味着位于逻辑运算符后面的代码(如函数调用)可能根本就不会执行.

对于and运算符, 两边的值都为真时最终结果才为真, 但是只要其中一个值为假, 那么最终结果就是假, 所以Python按照下面的规则执行and运算:

  • 如果左边表达式的值为假, 那么就不用计算右边表达式的值了, 因为不管右边表达式的值是什么, 都不会影响最终结果, 最终结果都是假, 此时and会把左边表达式的值作为最终结果;
  • 如果左边表达式的值为真, 那么最终结果此时是不确定的, and会继续计算右边表达式的值, 并将右边表达式的值作为最终结果.

对于or运算符, 情况是类似的, 两边的值都为假时最终结果才为假, 只要其中有一个值为真, 那么最终结果就是真, 所以Python按照下面的规则执行or运算:

  • 如果左边表达式的值为真, 那么就不用计算右边表达式的值了, 因为不管右边表达式的值是什么, 都不会影响最终结果, 最终结果都是真, 此时or会把左边表达式的值作为最终结果;
  • 如果左边表达式的值为假, 那么最终结果此时是不确定的, or会继续计算右边表达式的值, 并将右边表达式的值作为最终结果.

另外, andor运算符会将其中一个表达式的值作为最终结果, 而不是将True或者False作为最终结果.