#
5.10 ブール演算 (boolean operation)

ブール演算は、全ての Python 演算子の中で、最も低い優先順位になっています:

  `expression` | ::= | `or_test | lambda_form`
  `or_test` | ::= | `and_test | or_test "or" and_test`
  `and_test` | ::= | `not_test | and_test "and" not_test`
  `not_test` | ::= | `comparison | "not" not_test`
  `lambda_form` | ::= | `"lambda" [parameter_list]: expression`

  Download entire grammar as text.

ブール演算のコンテキストや、式が制御フロー文中で使われる最には、 以下の値: `None` 、すべての数値型におけるゼロ、空の配列 (文字列、 タプル、およびリスト) 、空のマップ型 (辞書) 、は偽 (false) であると 解釈されます。それ以外の値は真 (true) であると解釈されます。

演算子 `not` は、引数が偽である場合には `1` を、それ以外の 場合には `0` になります。

式 `x and y` は、まず x を評価します; x が偽なら、x の値を返します; それ以外の場合には、 y の値を評価し、その結果を返します。

式 `x or y` は、まず x を評価します; x が真なら、x の値を返します; それ以外の場合には、 y の値を評価し、その結果を返します。

(`and` も `not` も、返す値を `0` や `1` に 制限するのではなく、最後に評価した引数の値を返すので注意してください。 この仕様は、例えば `s` を文字列として、`s` が空文字列の 場合にデフォルトの値に置き換えるような場合に、`s or 'foo'` と書くと期待通りの値になるために便利なことがあります。 `not` は、式の値でなく独自に値を作成して返すので、 引数と同じ型の値を返すような処理に煩わされることはありません。 例えば、 `not 'foo'` は、 `''` ではなく `0` になります)