複合代入演算子

複合代入演算子

インクリメントとデクリメント

 プログラミングでは、変数の値を 1 つだけ増やす インクリメント (increment) という処理を行なうことがよくあります。たとえば次のようなコードを書けば、変数 a の値をインクリメントすることができます。

a = 10
a = a + 1
print(a)
11

 上のコードでは最初に a の値を入れておいてから、次の行で自身に 1 を加えた値をあらためて変数 a に入れています。Python では 複合代入演算子 を用いて次のように記述することができます。

a = 10
a += 1
print(a)
11

 「 a += 1 」は「 a に 1 を加えた値を a に代入する」という意味です。逆に a の値を 1 つだけ小さくしたいとき、すなわち デクリメント (decrement) するときは「 -= 」という複合演算子を使います:

a = 10
a -= 1
print(a)
9

 

複合代入演算子の種類

 あらゆる種類の算術演算子を代入演算子と組合わせることが可能です。

複合代入演算子 演算
+= 左の値に右の値を足して代入
-= 左の値から右の値を引いて代入
*= 左の値にに右の値をかけて代入
/= 左の値を右の値を割って代入
**= 左の値を右の値でべき乗して代入
//= 左の値を右の値で切り捨て除算して代入
%= 左の値を右の値で割った余りを代入

 いくつかの複合代入演算子を試してみます。 
 a = 10 を 2 乗して a に代入:

a = 10
a **= 2
print(a)
100

 
 a = 17 を 3 で割った整数部分を a に代入:

a = 17
a //= 3
print(a)
5

 
 a = 8753 を 219 で割った余りを a に代入:

a = 8753
a %= 219
print(a)
212

 このように、複合代入演算子を用いると、とてもスマートなコードを書くことができます。
 

複合演算子? 複合代入演算子?

 Python を扱ったサイトをあちこちググってみると、「 += 」の名称が複合演算子と書いてあったり、複合代入演算子となっていたりと、どうも用語が統一されていないようです。「海外にはあるだろう」と思ってアメリカ人が書いた本を読んでみると、
「こういう短縮された文法がある」
と書かれていました ...... た、短縮された文法って ...... せめて何か呼び名をつけてあげようよ ...... まあ、この記号に正式名称があるのかないのか、いまだ定かではないのですけれど、当サイトでは「代入を実行する演算子」であることがはっきりとわかるように、複合代入演算子 と記述することにしています。