web-dev-qa-db-ja.com

論理ステートメントの優先順位NOT AND&OR in python

私が知る限り、C&C++では、NOT AND&ORはNOT> AND> ORです。しかし、Pythonではこれは同様に機能しないようです。 Pythonのドキュメントで検索しようとしましたが、失敗しました(ちょっとイライラしていると思います)。

61
Akshar Gupta

ドキュメンテーションによると、最高から最低までではありません、AND、OR https://docs.python.org/3/reference/expressions.html#operator-precedence

優先順位が最低から最高の完全な優先順位表を次に示します。行は同じ優先順位を持ち、左から右へ連鎖します

  1. ラムダ
  2. if – else
  3. または
  4. そして
  5. xではない
  6. in、not in、is、is、not、<、<=、>、> =、!=、==
  7. |
  8. ^
  9. <<、>>
  10. +、-
  11. *、/、//、%
  12. + x、-x、〜x
  13. **
  14. x [index]、x [index:index]、x(arguments ...)、x.attribute
  15. (式...)、[式...]、{キー:値...}、{式...}

編集:間違った優先順位を持っていた

69
Kyle Heuton

次のテストを実行して、andおよびorの優先順位を把握できます。

初挑戦 0 and 0 or 1 in python console

orが最初にバインドする場合、0出力として。

私のコンソールでは、1は出力です。これは、andが最初にバインドするか、orに等しいことを意味します(おそらく式は左から右に評価されます)。

その後、1 or 0 and 0

orandが組み込みの左から右への評価順序で等しくバインドする場合、0出力として。

私のコンソールでは、1は出力です。次に、andorよりも高い優先順位を持つと結論付けることができます。

18
nos

notは、andよりも強くバインドします。これは、 言語リファレンスに記載されているorよりも強くバインドします

17
mgilson

ブール演算子のうち、最も弱いものから最も強いものへの優先順位は次のとおりです。

  1. or
  2. and
  3. not x
  4. is not; not in

演算子の優先順位が等しい場合、評価は左から右に進みます。

4
Oswald Wirt

正当な理由はありません 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ブール演算 を参照してください。

2
MarianD