Pythonにおけるorとandの優先順位は?どっちが先に比較される?

今回はPythonにおけるorとandの優先順位についてご紹介いたします。



Pythonにおけるorとandの優先順位は?どっちが先に比較される?

結論から言うとPythonではorよりもandの方が強く(大体のプログラミング言語ではorよりもandの方が強い気がします)、左から順に比較するにしても、orよりも先にまずandをみます。

例えば次のPythonのソースコードがあるとします。

基本的にはオペランドの左から順に計算していきますが、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:」とカッコをつけましょう)

続いて、余談となりますが下記のソースコードがあるとします。

もし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の優先順位についてご紹介いたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Python

Posted by ちこ