1. ホーム
  2. python

[解決済み] ブール演算子 vs ビット演算子

2023-04-29 17:22:12

質問

ブール演算子とビット演算子をいつ使うべきか迷っています。

  • and&
  • or|

どのような場合にそれぞれを使用するのか、また、一方を使用すると結果にどのような影響を与えるのか、どなたか教えてください。

どのように解決するのですか?

いくつかのガイドラインを紹介します。

  • ブール演算子は通常 ブール演算子 の値に対して使用されますが、ビット演算子は通常 整数 の値に対して使用されます。
  • ブール演算子は 短絡的 ですが、ビット演算子は ではなく を短絡させる。

短絡的な動作は、このような表現に有効です。

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

この場合、ビット単位の & 演算子では両辺が常に評価されてしまうため、正しく動作しません。 AttributeError: 'NoneType' object has no attribute 'foo' . ブール演算子 and 演算子を使うと、最初の式が False のとき、2 番目の式は評価されません。同様に or は最初の引数がTrueの場合、2番目の引数を評価しません。