「Pythonの評価順序と短絡評価」について、たまに忘れてしまう自分とプログラミング初心者の方に向けて要点をまとめました。以下に要点を記します。
評価順序の要点
1. 算術演算子(+, -, *, / など)
2. 比較演算子(<, ==, >, != など)。
3. 論理演算子(and, or)
(論理演算子の評価は短絡評価 "short-circuit evaluation" と呼ばれる仕組みを持っています。)
1から順に評価されます。また短絡評価については以下に記します。
短絡評価の要点
短絡評価は論理演算子に適用されます。
- and
- 左側の式が『偽』の場合、右側の式は評価されずに結果が False となります。
- or
- 左側の式が『真』の場合、右側の式は評価されずに結果が True となります。
例題1
a + b < c or d
答え
この例題では、まず a + b が評価され、その結果が c より小さいかどうか比較されます(比較演算子の評価)。そして、その結果が真であれば、論理演算子 or の右側の式 d は評価されません。
例題2
B = True
C = 10
a = 10
if a == (B or C):
print("条件式が真です")
else:
print("条件式が偽です")
答え
この例題では、B は真であり、比較演算子の右側のオペランドである C の評価がスキップされます。したがって、「a == (B or C)」は「a == B」と等価となり、条件式は真となります。
BまたはC
aがBまたはCの場合を表現するには、次のように書くことができます。
if a == B or a == C:
また、よりシンプルな書き方としては、次のように書くこともできます。
if a in [B, C]:
これにより、リスト内にaの値が含まれているかどうかを効率的に判定することができます。
BかつC
aがBかつCの場合を表現するには、次のように書くことができます。
if a == B and a == C:
よりシンプルな書き方としては、次のように書くこともできます。
if a == B == C:
以上になります。
ご指摘などありましたら、コメントしていただくと嬉しいです。