[Python] 演算子

Python演算子

Pythonには、以下の演算子があります。

 +       -       *       **      /       //      %
 <<      >>      &       |       ^       ~
 <       >       <=      >=      ==      !=      <>

優先順位

式は、以下の表の優先順位にしたがって評価されます。結合規則は、同じ優先順位のものがふたつ以上あった場合、どちらから先に評価するかを示します(「左」なら、左にあるものから評価されます)。表の中の、exprとkey, f, index, x, yは式で、attrとargは識別子です。

優先順位 形式 説明 結合規則
高い `expr, ...`, { key: expr, ...}, [expr, ...], (expr, ...) 文字列変換、辞書の作成、リストの作成、タプルの作成 なし
^ f(expr, ...), x[index:index], x[index], x.attr 関数呼び出し, スライス、添字、属性参照
¦ x ** y べき乗
  ~x, +x, -x ビット単位の補数 (NOT)、単項演算子の符号保持、単項演算子の符号反転 なし
  x * y, x / y, x // y, x % y 乗算、除算、切り捨て除算、剰余
  x + y, x - y 加算、減算
  x << y, x >> y 左シフト、右シフト
  x & y ビット単位の論理積 (AND)
  x ^ y ビット単位の排他的論理和 (XOR)
  x ¦ y ビット単位の論理和 (OR)
  x < y, x <= y, x > y, x >= y, x <> y, x != y, x == y, x is y, x is not y, x in y, x not in y 比較(小なり、以下、大なり、以上、不等価、等価、オプジェクトのアイデンティティの同一性評価、集合内のメンバシップの評価) なし
  not x 論理否定 (NOT) なし
  x and y 論理積 (AND)
¦ x or y 論理和 (OR)
v expr if expr else expr 三項式
低い lambda arg, ...: expr 無名関数 なし

除算

除算 (/) のオペランドがふたつとも整数であった場合、演算結果の小数点以下は切り捨てられ、整数になります。どちらかが浮動小数点数であった場合、演算結果は浮動小数点数になります。

>>> 1 / 2
0
>>> 1 / 2.0
0.5
>>> 1.0 / 2
0.5

なお、この仕様は将来のPythonでは変更される可能性があります。

切り捨て乗算

//演算子は、除算を実行し、演算結果の小数点以下を切り捨てます。演算結果の方は、オペランドがふたつとも整数であった場合は整数に、どちらかが浮動小数点であった場合は浮動小数点になります。

>>> 1 // 2
0
>>> 1 // 2.0
0.0
>>> 1.0 // 2
0.0

この演算子は、/演算子の挙動が将来変更されたとき、スクリプトを修正しなくても済むようにするために導入されました。

比較

Pythonでは、比較演算子をつなげて記述することが可能です。すなわち、他のプログラミング言語では、

>>> 1 < 2 and 2 < 3
True

と記述しなければならないところを、

>>> 1 < 2 < 3
True

と記述できます。

三項式

三項式は、

expr1 if expr2 else expr3

と記述し、expr2が真のときexpr1となり、expr2が偽のときexpr3となります。