布尔运算符与位运算符我搞不懂什么时候应该使用布尔运算符和位运算符。and vs &, or vs |有人能启发我什么时候使用每一种,什么时候使用一种而另一种会影响我的结果?
3 回答

GCT1015
TA贡献1827条经验 获得超4个赞
and
or
&
|
and
和 or
短路,即 True or sys.exit(1)
不会退出,因为对于某个值( True or ...
,False and ...
)在第一个操作数中,第二个操作数不会更改结果=不需要计算。但 |
和 &
别短路- True | sys.exit(1)
把你赶出REPL。 (只适用于某些人?带有操作符重载的语言,包括Python:) &
和 |
是正常的操作人员,可能会超载- and
和 or
被伪造成语言(尽管至少在Python中,强制使用布尔语言的特殊方法可能会产生副作用)。 (只适用于几种语言(见KennyTM的评论):) and
和 or
返回(总是?我从来没有真正理解这一点,我也不需要它)一个操作数的价值,而不是 True
或 False
..这不会改变布尔表达式在条件下的意义- 1 or True
是 1
,但是 1
也是真的。但是它曾经被用来模拟一个条件运算符( cond ? true_val : false_val
在C语法中, true_val if cond else false_val
在Python中使用了几年)。为 &
和 |
,结果类型取决于操作数如何重载各自的特殊方法( True & False
是 False
,99 & 7
是 3
,对于集合,它是联合/交叉.)。
a_boolean & another_boolean
and
and
or
&
|

qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
&
and
0 < 1 & 0 < 2
0 < 1 and 0 < 2
False
0 < (1 & 0) < 2
0 < 0 < 2
0 < 0 and 0 < 2
.
添加回答
举报
0/150
提交
取消