
複合代入演算子(累算代入文)
まず、次のコードをご覧ください。
num = 3
num = num + 6 # numに6を足して値を上書きする
print(num) # 9が出力される
最初に、変数numに3が代入されています。2行目で変数numに6が足され、代入(上書き)されています。出力結果は9になります。このコードの書き方は、これまで習ってきたやり方です。
先ほどの2行目の式を、複合代入演算子で記述することができます。次のように書き換えることができます。
num = 3
num += 6 # numに6を足して値を上書きする
print(num) # 9が出力される
上記コードで変わったのは、2行目の"num += 6"の部分で、"+=
"という記号の組み合わせが使われています。これは"num = num + 6"と同じ意味になります。つまり、『"+=
"の左辺(変数)に代入されている値に右辺の値を足して、左辺の変数に代入せよ』という意味になります。このように書くことで、コードがシンプルになります。(※"num = num + 6"と書いても間違いではありません。)
複合代入演算子は、"a = a + b"のような形の式で使用することができ、+
記号以外にも各演算子で使用することができます。
num += 5 # num = num + 5
num -= 5 # num = num - 5
num *= 5 # num = num * 5
num /= 5 # num = num / 5
num %= 5 # num = num % 5
num //= 5 # num = num // 5
num **= 5 # num = num ** 5
複合代入演算子の使いどころとしては、例えば、『ある条件を満たしたモノの数を数える場合に、条件を満たしたモノが見つかったタイミングで"count"変数の値を1ずつ上げていく』、というような場面です。下記のコードは、『"高さの数値リスト"の中から、2.0以上の値がいくつあるかをカウントする』プログラムです。まだ習ったことが無い記述がたくさん出てきているので難しく感じるかもしれませんが、どこで複合代入演算子が使われているのか、確認してみてください。
height_list = [0, 6.4, 5, 1.2, 0.8, 2.6]
count = 0 # 初期値は0
for height in height_list:
if height > 2.0:
count += 1 # ここで、countを1上げる
print('Count is', count)
このコードで注目して欲しいのは、『3行目で0に初期化したcount変数の値を、6行目で1足している』という部分です。5行目のifの部分で高さが2.0以上かどうかを確認しています。条件を満たしていれば"count += 1"で値をインクリメントします。このように複合代入演算子を使う場面があります。
インクリメントとは、変数の値を1上げることを言い、デクリメントは変数の値を1下げることを言います。
Pythonでは、"num += 1"がインクリメントの式で、"num -= 1"がデクリメントの式になります。
(※ 他のプログラミング言語では、"num++"や"num--"といった演算子をつかう場合もありますが、Pythonにはこのような演算子はありません。)