インクリメント
プログラミングでは変数の値を 1 つだけ増やす インクリメント (increment) という処理を行なうことがよくあります。たとえば次のようなコードを書けば、変数 a の値をインクリメントすることができます。
# PYTHON_INCREMENT
# In[1]
a = 10
a = a + 1
print(a)
11
上のコードでは最初に a の値を入れておいてから、次の行で自身に 1 を加えた値をあらためて変数 a に入れています。Python では 複合代入演算子(累算代入演算子) を用いて次のように記述することができます。
# In[2]
a = 10
a += 1
print(a)
11
デクリメント
a の値を 1 つだけ小さくしたいとき、すなわち デクリメント (decrement) するときは「 -= 」という複合演算子(累算代入演算子)を使います:
# PYTHON_DECREMENT
a = 10
a -= 1
print(a)
9
複合代入演算子(累算代入演算子)
あらゆる種類の算術演算子を代入演算子と組合わせることが可能です。
複合代入演算子 | 演算 |
---|---|
+= |
左の値に右の値を足して代入 |
-= |
左の値から右の値を引いて代入 |
*= |
左の値にに右の値をかけて代入 |
/= |
左の値を右の値を割って代入 |
**= |
左の値を右の値でべき乗して代入 |
//= |
左の値を右の値で切り捨て除算して代入 |
%= |
左の値を右の値で割った余りを代入 |
いくつかの複合代入演算子を試してみます。
a = 10 を 2 乗して a に代入します:
# PYTHON_COMPOUND_ASSIGNMENT_OPERATOR
# In[1]
a = 10
a **= 2
print(a)
100
a = 17 を 3 で割った整数部分を a に代入します。
# In[2]
a = 17
a //= 3
print(a)
5
a = 8753 を 219 で割った余りを a に代入します。
# In[3]
a = 8753
a %= 219
print(a)
212
このように、複合代入演算子を用いるとスマートなコードを書くことができます。
Python を扱ったサイトをあちこちググってみると、「 += 」の名称が複合演算子と書いてあったり、複合代入演算子、あるいは累算代入演算子となっていたりと、どうも用語が統一されていないようです。アメリカ人が書いた本を読んでみると、
「こういう短縮された文法がある」
と書かれていました … た、短縮された文法って … せめて何か呼び名をつけてあげようよ … まあ、この記号に正式名称があるのかないのか、いまだ定かではないのですけれど、当サイトでは「代入を実行する演算子」であることがはっきりとわかるように、複合代入演算子 と記述することにしています。