Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの演算子の優先順位とは?優先度一覧表とコード例でわかりやすく解説

Pythonでは、1つの式の中に複数の演算子が含まれている場合、あらかじめ決められた演算子の優先順位に従って評価が行われます。優先順位の高い演算子ほど先に処理されるため、このルールを正しく理解することは、意図した通りの計算結果を得るうえで非常に重要です。

以下の表は、Pythonの主な演算子を優先順位の高い順(上位から下位へ)に並べたものです。

番号演算子と説明
1**
べき乗(累乗)演算
2~ + -
補数(ビット反転)、単項プラスと単項マイナス(後ろ2つのメソッド名は +@ と -@)
3* / % //
乗算、除算、剰余(余りの計算)、切り捨て除算
4+ -
加算と減算
5>> <<
ビット単位の右シフト・左シフト
6&
ビット単位のAND
7^ |
ビット単位の排他的OR(XOR)とOR
8<= < > >=
比較演算子
9<> == !=
等価演算子(※ <> はPython 3では廃止され、現在は != のみ使用可能)
10= %= /= //= -= += *= **=
代入演算子
11is is not
同一性演算子(同一オブジェクトであるかどうかの判定)
12in not in
メンバーシップ演算子(要素が含まれているかどうかの判定)
13not or and
論理演算子

演算子の優先順位が式の評価に与える影響

演算子の優先順位は、式がどのような順序で評価されるかを決定します。

例として x = 7 + 3 * 2 という式を見てみましょう。ここで変数 x に代入される値は 20 ではなく 13 になります。*(乗算)は +(加算)よりも優先順位が高いため、最初に 3 * 2 が計算され、その結果に対して 7 が加算されるからです。

上の表では、優先順位が最も高い演算子が表の上部に、最も低い演算子が下部に配置されています。また、同じ優先順位の演算子が並んでいる場合は、基本的に左から右の順で評価されます。計算順序を明確にしたい場面では、括弧 () を活用すると安全です。

サンプルコード

#!/usr/bin/python3

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d        # (30 * 15) / 5
print("(a + b) * c / d の値:", e)

e = ((a + b) * c) / d      # (30 * 15) / 5
print("((a + b) * c) / d の値:", e)

e = (a + b) * (c / d)      # (30) * (15/5)
print("(a + b) * (c / d) の値:", e)

e = a + (b * c) / d        # 20 + (150/5)
print("a + (b * c) / d の値:", e)

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

(a + b) * c / d の値: 90.0
((a + b) * c) / d の値: 90.0
(a + b) * (c / d) の値: 90.0
a + (b * c) / d の値: 50.0

※ 元のサンプルコードはPython 2向けのものでしたが、ここではPython 3の構文(print関数形式)に合わせて書き直しています。Python 3では / による除算が常に浮動小数点数(float)を返すため、結果は 90.0 のように表示されます。整数の結果が必要な場合は //(切り捨て除算)を使用してください。

まとめ

  • 演算子には優先順位があり、優先度の高いものから順に評価される。
  • 優先順位が同じ場合は、原則として左から右の順で評価される。
  • 複雑な式では括弧を使って計算順序を明示すると、コードの読みやすさと正確性の両方が向上する。
  1. Pythonで++や--演算子はどう動く?インクリメントができない理由と正しい代替方法

    Pythonには++や--という演算子は存在しないC/C++やJavaなどの言語では、++と--はそれぞれ「1を加える」「1を引く」ためのインクリメント・デクリメント演算子として定義されています。しかし、Pythonではこれらは演算子として定義されていません。その理由はPythonの設計思想にあります。Pythonではすべてのオブジェクトがメモリ上に格納され、変数はそのオブジェクトを指す「名前(ラベル)」にすぎません。さらに、数値オブジェクトはイミュータブル(不変)であるため、後から値を直接書き換えることができません。このため、C言語スタイルのa++のような演算子は採用されていないのです。前置

  2. Pythonにおける演算子の優先順位とは?正しい評価の順序を一覧で解説

    Pythonの演算子の優先順位とはPythonでは、1つの式に複数の演算子が含まれる場合、あらかじめ定められた優先順位(precedence)に従って評価されます。優先順位を正しく理解することは、意図した通りの計算結果を得るために非常に重要です。以下の表は、Pythonの主な演算子を優先度の高い順から低い順に並べたものです。演算子の優先順位一覧(高い順)** : べき乗(累乗)演算~ + - : ビット反転、単項プラス・単項マイナス(最後の2つのメソッド名は +@ と -@)* / % // : 乗算、除算、剰余(モジュロ)、切り捨て除算+ - : 加算(足し算)と減算(引き算)>>