Skip to content

Python 逻辑运算符

逻辑运算符用来根据真值(真 / 假)组合条件,常用于 ifwhile 等。Python 里有三个关键字:and(与)、or(或)、not(非)。

它们操作的是真值检测意义上的「真假」,不一定是严格的 bool 类型;and / or 还会短路,并可能返回最后一个被求值的操作数(不一定是 True/False)。更多运算符总览见 运算符

and(逻辑与)

两侧都为时,整体为真;从左往右计算,左侧为假则不再算右侧(短路)。

python
a = 20
b = 10
if a > 0 and b > 0:
    print("a 和 b 都是正数。")

输出:

text
a 和 b 都是正数。

表达式 x and y:若 x 为假,结果为 x;否则结果为 y

or(逻辑或)

任一侧为真即可为真;左侧为真则不算右侧(短路)。

python
a = 20
b = -10
if a > 0 or b > 0:
    print("至少有一个条件成立")

输出:

text
至少有一个条件成立

表达式 x or y:若 x 为真,结果为 x;否则结果为 y

not(逻辑非)

一元运算符,对操作数做真值取反,结果类型为 boolTrueFalse)。

python
a = 50
print(not (a % 4 or a > 0))

分析: a % 450 % 4 == 2,在布尔语境下为真;or 短路,整个 a % 4 or a > 02(真值意义上的真)。not(...) 得到 False

输出:

text
False

注意括号:若写成 not a % 4 or a > 0,会因优先级不同而得到别的结果(not 优先级高于 or)。

真值与 bool

在条件判断里,None0空序列(如 ""[])等被视为,其余多数对象为。需要显式转成 0/1 时用 bool(x)

与比较运算配合

逻辑运算符常和 >== 等比较运算一起使用;比较运算见 比较运算符

小结

运算符含义短路
x and y全真才为真(结果为最后求值的操作数)左假则停
x or y有真即为真(结果为最后求值的操作数)左真则停
not x取反,结果为 bool

图示(参考)

Python 逻辑运算符

参考