私が知る限り、C&C++では、NOT AND&ORはNOT> AND> ORです。しかし、Pythonではこれは同様に機能しないようです。 Pythonのドキュメントで検索しようとしましたが、失敗しました(ちょっとイライラしていると思います)。
ドキュメンテーションによると、最高から最低までではありません、AND、OR https://docs.python.org/3/reference/expressions.html#operator-precedence
優先順位が最低から最高の完全な優先順位表を次に示します。行は同じ優先順位を持ち、左から右へ連鎖します
編集:間違った優先順位を持っていた
次のテストを実行して、and
およびor
の優先順位を把握できます。
初挑戦 0 and 0 or 1
in python console
or
が最初にバインドする場合、0
出力として。
私のコンソールでは、1
は出力です。これは、and
が最初にバインドするか、or
に等しいことを意味します(おそらく式は左から右に評価されます)。
その後、1 or 0 and 0
。
or
とand
が組み込みの左から右への評価順序で等しくバインドする場合、0
出力として。
私のコンソールでは、1
は出力です。次に、and
がor
よりも高い優先順位を持つと結論付けることができます。
not
は、and
よりも強くバインドします。これは、 言語リファレンスに記載されているor
よりも強くバインドします
ブール演算子のうち、最も弱いものから最も強いものへの優先順位は次のとおりです。
or
and
not x
is not
; not in
演算子の優先順位が等しい場合、評価は左から右に進みます。
正当な理由はありません Pythonを持つためにotherこれらの演算子の優先順位は十分に確立されたもの (ほぼ)C/C++を含む他のすべてのプログラミング言語。
The Python Language Reference、part 6.16-operator precedence、downloadable(現在のバージョンおよび他のすべての標準ドキュメントでパックされています)から https://docs.python.org/3/download.html 、またはオンラインで読む: 6.16。Operator precedence 。
しかし、まだPythonに誤解を招く可能性があります:and
およびor
演算子のresultは、異なる from True
またはFalse
-同じドキュメントの 6.11ブール演算 を参照してください。