演算子

編集

式は、演算子と1項以上のオペランド(被演算子)からなります。 典型的には中置の二項演算子式ですが、単項演算子やif式のような式とは思い難い見た目をしているものもありますが、値を持つ構文要素はすべからく式と考えて構いません。

演算子の優先順位

編集

次の表は、Pythonにおける演算子の優先順位を、最も高い優先順位(最も拘束力が強い)から最も低い優先順位(最も拘束力が弱い)へとまとめたものです。同じ枠内の演算子は同じ優先順位を持ちます。構文が明示的に与えられていない限り、演算子は二項演算子です。同じボックス内の演算子は左から右へグループ化されます(右から左へグループ化される指数演算を除く)。

比較、メンバーシップテスト、同一性テストはすべて同じ優先順位を持ち、比較のセクションで説明したように、左から右へ連鎖する機能を持っていることに注意してください。

演算子の優先順位
演算子 概要
(expr...),[expr...], {key: value...}, {expr...} 結合式または括弧付き式、リスト、辞書、集合
x[index], x[start:stop:step], x(args...), x.attr 配列要素参照、スライス、関数やメソッドの呼出し、属性参照
await x Await 式
** 指数関数
+x, -x, ~x 単項プラス、単項マイナス、ビット単位のNOT
*, @, /, //, % 乗算、行列乗算、除算、剰余有除算、剰余
+, - 加算、減算
<<, >> シフト演算
& ビット単位の AND
^ ビット単位の XOR
<nowiki>|</nowiki> ビット単位の OR
in, not in, is, is not, <, <=, >, >=, !=, == メンバーシップテスト、アイデンティティテストなどの比較
not x ビット単位の NOT
and ビット単位の AND
or ビット単位の OR
ifelse 条件演算子
lambda ラムダ式
:= 代入演算子

演算子の一覧

編集
演算子の一覧
演算 構文 関数
加算 a + b add(a, b)
連結 seq1 + seq2 concat(seq1, seq2)
包含テスト obj in seq contains(seq, obj)
除算 a / b truediv(a, b)
除算 a // b floordiv(a, b)
ビット単位論理積 a & b and_(a, b)
ビット単位排他的論理和 a ^ b xor(a, b)
ビット反転 ~ a invert(a)
ビット単位論理和 <nowiki>a | b</nowiki> or_(a, b)
冪乗 a ** b pow(a, b)
同一性 a is b is_(a, b)
同一性 a is not b is_not(a, b)
インデックス指定代入 obj[k] = v setitem(obj, k, v)
インデックス指定削除 del obj[k] delitem(obj, k)
インデックス指定参照 obj[k] getitem(obj, k)
左シフト a << b lshift(a, b)
剰余 a % b mod(a, b)
乗算 a * b mul(a, b)
行列乗算 a @ b matmul(a, b)
算術否定 - a neg(a)
論理否定 not a not_(a)
単項プラス + a pos(a)
右シフト a >> b rshift(a, b)
スライス指定代入 seq[i:j] = values setitem(seq, slice(i, j), values)
スライス指定削除 del seq[i:j] delitem(seq, slice(i, j))
スライス参照 seq[i:j] getitem(seq, slice(i, j))
文字列フォーマッティング s % obj mod(s, obj)
減算 a - b sub(a, b)
真偽判定 obj truth(obj)
より小 a < b lt(a, b)
より小または一致 a <= b le(a, b)
一致 a == b eq(a, b)
不一致 a != b ne(a, b)
より大または一致 a >= b ge(a, b)
より大 a > b gt(a, b)