累算代入演算子(複合代入演算子)の使い方
変数に値を代入するときに、変数に対して演算を行った結果を元の変数に代入する場合に使用する累算代入演算子(または複合代入演算子)の使い方について解説します。
(Last modified: )
累算代入演算子の種類と使い方
変数には値を代入したり、別の変数に対して演算を行った結果を代入したりすることができます。
price = 120 tax = price * 0.08
また場合によっては変数に代入されている値を 1 だけ加算して、元の変数に再び代入するような処理もよく行われます。このような場合は次のように記述することができます。
count = 0 count = count + 1
= を左辺と右辺が等しいという意味で見てみるとおかしな文になっていますが、 = は右辺の値を左辺の変数に代入するための演算子です。よって変数 count が参照している値に 1 を加算した新しい値を左辺の変数 count に改めて代入するという処理を行っていることになります。結果として変数 count には 1 という値が代入されます。
このような何らかの演算を行った後で元の変数にあらためて代入するような文を記述する時に累算代入演算子を使用することができます。累算代入演算子を使用すると先ほどの例は次のように書くことができます。
count = 0
count += 1
count = count + 1 と書く代わりに count += 1 と省略して記載することがdけいます。この += のことを累算代入演算子といいます。 Python では次の種類の累算代入演算子が用意されています。
変数 += 式 # 変数 = 変数 + 式 変数 -= 式 # 変数 = 変数 - 式 変数 *= 式 # 変数 = 変数 * 式 変数 /= 式 # 変数 = 変数 / 式 変数 //= 式 # 変数 = 変数 // 式 変数 %= 式 # 変数 = 変数 % 式 変数 **= 式 # 変数 = 変数 ** 式 変数 >>= 式 # 変数 = 変数 >> 式 変数 <<= 式 # 変数 = 変数 << 式 変数 &= 式 # 変数 = 変数 & 式 変数 ^= 式 # 変数 = 変数 ^ 式 変数 |= 式 # 変数 = 変数 | 式
変数が参照されている値から指定した値を減算してから元の変数に改めて代入する場合は += 演算子を使い、指定した値を乗算してから元の変数に改めて代入する場合は *= 演算子を使います。
次のサンプルを見てください。
num = 10 print("num = " + str(num)) >> num = 10 # num に 5 を加算します num += 5 print("num = " + str(num)) >> num = 15 # num に 10 を乗算します num *= 10 print("num = " + str(num)) >> num = 150
変数が参照している値に対して演算した結果を再び元の変数に代入する場合に累算代入演算子を使用する方法について試してみました。
文字列に対して累算代入演算子を使う
+ 演算子は文字列に対して使われると文字列の連結が行われます。(詳細は「文字列の連結と繰り返し(乗算)」を参照されてください)。
str = "Helllo," str = str + "Python"
連結した文字列を元の変数に改めて代入する場合には累算代入演算子を使って次のように記述することができます。
str = "Helllo," str += "Python"
また文字列には - や / などの演算子は使用できませんが * 演算子を使って文字列を指定した回数繰り返した新しい文字列を作成することができます。
str = "Good!" str = str * 4
指定した回数繰り返した新しい文字列を元の変数に改めて代入する場合は累算代入演算子を使って次のように記述することができます。
str = "Good!" str *= 4
このように累算代入演算子は数値だけではなく文字列に対しても使用することができます。
次のサンプルを見てください。
str = "Helllo," str += "Python" print(str) >> Helllo,Python str = "Good!" str *= 4 print(str) >> Good!Good!Good!Good!
文字列に対しても累算代入演算子が使用でくることを確認しました。
-- --
累算代入演算子(または複合代入演算子)の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。