sec01 - 変数の値の上書き

変数の値の上書き

値を変数へ代入した後、同じ変数に対して別の値を代入することができます。その挙動を確認してみたいと思います。

コード(例1)

まずは、上書き処理のないコードを書いて、処理の流れを確認します。
(筆者の環境では、"sec01_learning03_variables.py"という新しいファイルを作成しています。)

numA = 2
numB = numA + 5

print(numA)
print(numB)

このコードを実行すると、下図のように、"2"と"7"の結果が出力されます。

このコードの処理の手順を一つずつ確認していきたいと思います。

numA = 2

まず、"numA"に"2"が代入されています。

numB = numA + 5

次の行では、式の右辺を先に計算します。(※Pythonに限らず、プログラムは必ず代入式の右辺を先に計算します。そしてその結果を変数へ代入します。)

ですので、まずは先に"numA + 5"を行います。"numA"は"2"が代入されているので、"2 + 5"を行うことにより、結果は"7"になります。その"7"を"numB"に代入します。

ちなみに、2行目で"numA"が右辺の計算のために参照されましたが、ここでは"numA"に対して何か値が代入されているわけではありません。ですので、"numA"の値は"2"のままです。

この処理の流れから、TERMINALには"numA"の"2"と、"numB"の"7"が表示されます。

コード(例2)

次に、コードを3行目に追加します。

3行目では、変数"numB"に値が代入されます。この変数には既に値が代入されているため、新しい値が既存の値を上書きします。

numA = 2  # numA: 2
numB = numA + 5    # numA: 2,  numB: 7
numB = numA - numB

print(numA)
print(numB)

処理の流れを確認します。2行目の処理までは、先ほどと同じで、"numA"には"2"が、"numB"には"7"が代入されている状態です。

3行目の処理ですが、前回と同様に右辺を先に計算します。"numA - numB"は、それぞれ代入されている値を参照すると、"2 - 7"を行っていることになり、計算結果は"-5"になります。そして、"-5"を"numB"へ代入します。

よって、最後の2行の"print"による出力は、"numA"は"2"、"numB"は"-5"になります。

以上が、変数への上書きの挙動になります。

おすすめの記事