Pythonにおけるorとandの優先順位は?どっちが先に比較される?
今回はPythonにおけるorとandの優先順位についてご紹介いたします。
Pythonにおけるorとandの優先順位は?どっちが先に比較される?
結論から言うとPythonではorよりもandの方が強く(大体のプログラミング言語ではorよりもandの方が強い気がします)、左から順に比較するにしても、orよりも先にまずandをみます。
例えば次のPythonのソースコードがあるとします。
1 2 |
if True or False and False: print('True') |
基本的にはオペランドの左から順に計算していきますが、orとandの優先順位が等しいと仮定する場合、最初の「True or False」がTrueになり、その後「True and False」でFalseが返ってくるためprint文の内容は出力されないはずです。
しかし、上記の実行結果はprint文の内容が出力され、「True」とコンソールに表示されます。
つまり、まず最初に「False and False」が比較されてFalseが返ってきますが、その後「True or False」が比較されてTrueが返ってくるのです。
このことから、この場合はオペランドの左側から順に計算せず、orよりもandを先に比較するという仕様だということが分かります。(もしorを先に計算したいのならば「if (True or False) and False:」とカッコをつけましょう)
続いて、余談となりますが下記のソースコードがあるとします。
1 2 |
if False and False or True: print('True') |
もしandよりもorを先に計算する仕様ならば、まず「False or True」を比較してTrueになり、続いて「False and True」を比較するのでFalseが返ってきてprint文の内容が出力されないはずです。
しかし、上記は「False and False」を比較してFalseが返ってきて「False or True」を比較してTrueが返ってくることでprint文の内容が出力されます。
これらのことから、「orとandの優先順位はandの方が高く、orを先に比較することはない」ということが分かります。
ちなみに当たり前となりますがこれらをorのみで比較したり、優先順位が同じ演算子を使うならば、基本的には左から順に比較されていきます。
終わりに
今回はPythonにおけるorとandの優先順位についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません