値を加算したり代入したりするようなときに使うシンボルを演算子といいます。
Pythonの演算子には以下のようなものがあります。
算術演算子は、加減乗除と割り算の余りなどを求める演算子です。また、値を1だけ増減する演算子や値の符号を反転する演算子もあります。
演算子 | 機能 | 例 |
---|---|---|
+ | 加算 | a + b(aとbを加算する) |
- | 減算 | a - b(aからbを引く) |
* | 乗算 | a * b(aとbをかける) |
< | 除算 | a < b(aをbで割る) |
% | 剰余 | a % b(aをbで割った余りを求める) |
- | 負(単項演算子) | -a(aを負の値にする) |
Pythonの剰余(%、モジュロ)演算子は、実数の余りを計算します。たとえば「5 % 2」の結果は1です。
剰余演算は、通常はふたつの整数の値を使って行います。しかし、Pythonの剰余演算子は、実数の余りも計算することができます。
次の例は、実数で剰余を計算するスクリプトの例です。random.random()は、0以上1未満のランダムな実数値を返します。
そうして得られた数を100倍することによってaには0以上100未満の実数が、10倍することによってbには0以上10未満の実数が保存されます。
import random
a = random.random() * 100
b = random.random() * 10
print("a=" + str(a))
print("b=" + str(b))
x = a % b
print("a % b=" + str(x))
実行結果はたとえば次のようになります。
a=63.914460589029254
b=7.1216897434074795
a % b=6.940942641769418
代入演算子は、値を代入したり、演算結果を代入するときに使う演算子です。Pythonの代入演算子を次の表に示します。
演算子 | 機能 | 例 |
---|---|---|
= | 代入 | a =3のときaに3が代入される |
+= | 加算代入 | a +=3のときa = a + 3と同じ |
-= | 減算代入 | a -=3のときa = a - 3と同じ |
*= | 乗算代入 | a *=3のときa = a * 3と同じ |
/= | 除算代入 | a /=3のときa = a / 3と同じ |
>>= | 符号伝播右シフト代入 | a >>= b のときa = a << bと同じ |
<<= | 左シフト代入 | a>>= b のときa = a << bと同じ |
>>>= | ゼロで埋める右シフト代入 | a >>>= b のときa = a << bと同じ |
&= | AND代入 | a &=bのときa=a & bと同じ |
|= | OR代入 | a |=bのときa=a | bと同じ |
^= | 排他的OR代入 | a ^=bのときa=a ^ bと同じ=は単純な代入演算子です。 |
=演算子以外は、演算結果を代入します。>>=、<<=、>>>=については、ビット演算子(<<、>>、>>>)を参照してください。
ビット演算子はビット単位の操作を行います。Pythonのビット演算子を次の表に示します。
演算子 | 機能 | 例 |
---|---|---|
& | ビットごとのAND | a =10、b=3のときa & b=2 |
| | ビットごとのOR | a =10、b=3のときa | b=10 |
^ | ビットごとXOR(排他的OR) | a =10、b=3のときa ^ b=9 |
~ | ビットごとのNOT(補数) | a =10のとき~a=-11 |
<< | 左シフト | a=10のときa<< 3=80 |
>> | 符号伝播右シフト | a =10のときa >> 3 =1 |
>>> | ゼロで埋める右シフト | a =10のときa >>> 3 =1 |
関係演算子は比較演算子ともいい、演算子の左右の関係を調べた結果を返します。Pythonの関係演算子を次の表に示します。
演算子 | 機能 | 例 |
---|---|---|
== | 等価 | aとbが同じ値であるときa == bはtrue |
!= | 不等価 | aとbが同異なる値であるときa != bはtrue |
< | より小さい | a がbより小さい値であるときa < bはtrue |
=== | 同値 | aとbが同じ値であるときa===bはtrue |
!== | 不同値 | a とbが同じ値であるときa !==bはtrue |
> | より大きい | aがbより大きい値であるときa > bはtrue |
<= | より小さいか等しい | a がbより小さいか同じ値であるときa <=bはtrue |
>= | より大きいか等しい | a がbより大いか同じ値であるときa >= bはtrue |
等値演算子(==)は左右の値が等しいときにtrueを返しますが、「等しい」の意味は値の型によって異なります。 値の型が、数値、文字列、論理値の場合は、値が等しいかどうかで評価されます。オブジェクト、配列、関数の場合は参照が等しいかどうかで評価されます。 つまり、obj1==obj2の場合、obj1とobj2の値が同じであっても、別の場所にあるオブジェクトであればfalseになります。 同値演算子(===)は、値の型変換を行わないで、左右の値が等しいときにtrueを返します。
論理演算子は、論理演算を行います。Pythonの論理演算子を次の表に示します。
演算子 | 機能 | 例 |
---|---|---|
&& | 論理積(条件AND) | a=b=trueのとき、a && b = true(両方がtrueならtrue) |
|| | 論理和(条件OR) | a=trueまたはb=trueのとき、a || b = true(一方がtrueならtrue) |
! | 論理否定(NOT) | a=trueのとき、!a =false |
文字列演算子は、文字列を連結します。Pythonの文字列演算子を次の表に示します。
演算子 | 機能 | 例 |
---|---|---|
+ | 文字列の連結 | a="abc"、b="xyz"のとき、a+b ="abcxyz" |
+= | 文字列の連結代入 | a="abc"のとき、a +="xyz" ="abcxyz" |