累算代入文
変数に対する演算では、変数に対して行った演算結果を改めて同じ変数に対して代入するということが良く行われます。例えば変数に格納されている数値を1だけ増加させるといったことです。丁寧に書くと次のようになります。
num = 10 dumy = num + 1 num = dumy
数値オブジェクトは一度作成されると変更が出来ませんので、変数が参照しているオブジェクトを直接書き換えることは出来ません。その為、変数に対して数値の「1」を加算した新しい数値オブジェクトを作成し、そのオブジェクトを改めて変数に代入します。
このような処理は次のように記述することが出来ます。
num = 10 num = num + 1
一見すると変な式となっていますが、変数「num」に代入されているオブジェクトに対して1を加算した結果である「11」と言う数値オブジェクトを改めて変数「num」に代入しています。「=」は等しいと言う意味ではなく、あくまで右辺を左辺に代入するという意味で使用されるのでこのような書き方でも問題はありません。
このように元のオブジェクトに何らかの演算を行った結果を変数に改めて代入することは頻繁に行われます。その為、特別な記述方法が用意されています。次の例を見てください。
num = 10 num = num + 1
これは次のように記述した場合とほぼ同じです。(ほぼと言うのは厳密には異なる部分もあるためですが、現時点では気にしなくても構いません)。
num = 10 num += 1
このような記述方法を累算代入や拡張代入と呼びます。簡略した記述方法と思っていただいても構いません。
この記述方法は次のものが用意されています。
+= -= *= /= //= %= **= >>= <<= &= ^= |=
それぞれの使い方と意味は次の通りです。
変数 += 式 # 変数 = 変数 + 式 変数 -= 式 # 変数 = 変数 - 式 変数 *= 式 # 変数 = 変数 * 式 変数 /= 式 # 変数 = 変数 / 式 変数 //= 式 # 変数 = 変数 // 式 変数 %= 式 # 変数 = 変数 % 式 変数 **= 式 # 変数 = 変数 ** 式 変数 >>= 式 # 変数 = 変数 >> 式 変数 <<= 式 # 変数 = 変数 << 式 変数 &= 式 # 変数 = 変数 & 式 変数 ^= 式 # 変数 = 変数 ^ 式 変数 |= 式 # 変数 = 変数 | 式
基本的に二項演算子にはこの書式が用意されています。簡潔に記述できる点と、処理効率も良くなる場合が多いので使える時には使うようにします。
では実際に試してみます。
#coding: UTF-8 num = 8 print "num = ", str(num) num **= 3 print "num **= 3 = ", str(num)
上記を「test6-1.py」として保存します。保存する時の文字コードはUTF-8です。そして次のように実行して下さい。
( Written by Tatsuo Ikura )