python的or,and会返回其中一个操作数

2021-12-24 19:13:34 浏览数 (1)

or,and会返回其中一个操作数

or,and在python中会返回两个操作数中的一个,例如:

代码语言:javascript复制
>>> 1 and 2
2

这里并不是返回True,而是返回了第二个操作数。 因此,我们需要特别注意一下这里的特殊之处。下面的一些例子是面试喜欢问的。

代码语言:javascript复制
a = 1 or 2 and 3 and 4 or 5 and 6
print(a)

我们来分析一下上面例子的执行过程, and运算符的优先级高于or运算符,因此一步步执行的结果如下所示:

代码语言:javascript复制
1 or 3 and 4 or 5 and 6
1 or 4 or 5 and 6
1 or 4 or 6
1 or 6
1

另外一个例子是加入not运算符,这样的话,not运算符优先级高于and, and运算符优先级高于or,例如:

代码语言:javascript复制
b = 1 and 2 or 3 and 4 or 5 and not 6 and 7 or 8
print(b)

对于上面的运算过程,拆解如下:

代码语言:javascript复制
1 and 2 or 3 and 4 or 5 and False and 7 or 8
2 or 3 and 4 or 5 and False and 7 or 8
2 or 4 or 5 and False and 7 or 8
2 or 4 or False and 7 or 8
2 or 4 or False or 8
2 or False or 8
2 or 8
2

0 人点赞