一尘不染

Python-布尔运算符与按位运算符

python

我对何时应该使用布尔运算符与按位运算符感到困惑

  • and&
  • or|

有人能启发我何时使用每种药物,何时使用一种药物会影响我的结果?


阅读 941

收藏
2020-02-15

共1个答案

一尘不染

以下是一些准则:

  • 布尔运算符通常用于布尔值,而按位运算符通常用于整数值。
  • 布尔运算符是短路,但按位运算符不是短路。

短路行为在这样的表达式中很有用:

if x is not None and x.foo == 42:
    # ...

按位运算&符将无法正常工作,因为总是会评估双方,即AttributeError: 'NoneType' object has no attribute 'foo'。当你使用布尔and运算符时,如果第一个为False,则不计算第二个表达式。同样or,如果第一个参数为True,则不评估第二个参数。

2020-02-15