下記の演算子が定義されています。
+a # 正数 -a # 負数 a + b # 加算 a - b # 減算 a * b # 乗算 a / b # 除算 a % b # a を b で割った余り a ** b # a の b 乗 a // b # 切り捨て除算
下記のビット演算子が定義されています。
~a # ビット反転 a & b # AND:論理積(aもbも1のビットが1) a | b # OR:論理和(aまたはbが1のビットが1) a ^ b # XOR:排他的論理和(aまたはbが1のビットが1) a << b # b ビット左シフト a >> b # b ビット右シフト
下記の代入演算子が定義されています。++ や -- はサポートされていないので、代わりに a += 1 や a -= 1 を用います。
a = b # a に b を代入する a += b # a = a + b に同じ a -= b # a = a - b に同じ a *= b # a = a * b に同じ a /= b # a = a / b に同じ a %= b # a = a % b に同じ a **= b # a = a ** b に同じ a //= b # a = a // b に同じ a &= b # a = a & b に同じ a |= b # a = a | b に同じ a ^= b # a = a ^ b に同じ a <<= b # a = a << b に同じ a >>= b # a = a >> b に同じ
下記の比較演算子が定義されています。
a == b # a が b と等しい a != b # a が b と異なる a < b # a が b よりも小さい a > b # a が b よりも大きい a <= b # a が b 以下である a >= b # a が b 以上である a is b # a が b と等しい a is not b # a が b と異なる a in b # a が b に含まれる (a, b は共に文字列、または、b はリストやタプル) a not in b # a が b に含まれない (a, b は共に文字列、または、b はリストやタプル)
下記のブール演算子が定義されています。
a and b # a も b も真であれば真 a or b # a または b が真であれば真 not a # a が偽であれば真
下記の式は、c が真であれば x を、さもなくば y を返します。
x if c else y
文字列に対して下記の演算子が定義されています。文字数は 0文字から数えます。n や m にマイナスの数を指定すると、文字列の後ろから数えます。
a + b # 文字列 a と 文字列 b を連結します a * n # 文字列 a を n 回繰り返します a[n] # 文字列 a の中の n 番目の文字を取り出します a[n:m] # 文字列 a の中の n 番目から m 番目までの文字列を取り出します a[n:] # 文字列 a の中の n 番目から最後までの文字列を取り出します a[:m] # 文字列 a の中の 0 番目から m 番目までの文字列を取り出します a[n:m:s] # 文字列 a の中の n 番目から m 番目までの文字列を s個とばしで取り出します
他言語の三項演算子に相当する機能です。下記の例では err が 0 であれば "OK" を、0 以外であれば "NG" を表示します。
err = 0 print("OK" if err == 0 else "NG")
:= は Python 3.8 で追加された代入演算子です。Python の代入(=)は文であり、代入の結果を式として評価することができませんでしたが、= の代わりに := を用いることで代入の結果を式として評価することが可能となりました。:= がセイウチの目と牙に似ていることからセイウチ演算子とも呼ばれます。
s = "ABCDEF" if (len := len(s)) > 5: print("LONG") else: print("SHORT")
@ は Python 3.5 で導入された行列積演算子です。numpy の np.dot(A, B) の代わりに A @ B と記述できるようになりました。
import numpy as np A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) # [[1*5+2*7=19, 1*6+2*8=22], [3*5+4*7=43, 3*6+4*8=50]] print(np.dot(A, B)) # [[19, 22], [43, 50]] print(A @ B) # [[19, 22], [43, 50]]
演算子の優先順位は下記のようになります。
演算子 | 説明 |
---|---|
(expr, ...), [expr, ...], {key: value, ...}, {expr, ...} | 結合式、括弧式、リスト、辞書、集合 |
x[n], x[n:m], x(arg...), x.attr | 添字指定、スライス操作、呼び出し、属性参照 |
await x | Await 式 |
** | べき乗 |
+x, -x, ~x | 正数、負数、ビット演算(NOT) |
*, @, /, //, % | 乗算、行列乗算、除算、切り捨て除算、剰余 |
+, - | 加算および減算 |
<<, >> | シフト演算 |
& | ビット単位(AND) |
^ | ビット単位(XOR) |
| | ビット単位(OR) |
in, not in, is, is not, <, <=, >, >=, !=, == | 所属や同一性のテストを含む比較 |
not x | ブール演算(NOT) |
and | ブール演算(AND) |
or | ブール演算(OR) |
if ... else | 条件式 |
lambda | ラムダ式 |
:= | 代入式 |