1. まず結論 — = は「等しい」ではなく「入れる(代入する)」
- プログラミングの
=は数学で習う「左辺と右辺は常に等しい」という記号とは違います。 - Pythonでは「右側を計算して、その結果を左側の名前に保存する」命令です。
2. 実行の流れをステップで見る
文:
A = B + 3
Pythonこの一行は次の順で処理されます。
- 右辺
B + 3を評価(計算)する。 - 計算結果(数値や文字列など)をメモリに置き、それを
Aというラベルで参照できるようにする。 - 以後、プログラムで
Aと書くとその値が使われる。
ポイント:右辺の値が後で変わっても、A は自動で変わらない(明示的に再代入しない限り)。
3. 実例(順を追って)
例1:単純な代入
B = 200
A = B + 3
print(A) # => 203
B = 300
print(A) # => 203(変わらない)
Python説明:A = B + 3 の時点で A は 203 を持ちます。その後 B を変えても A が自動更新されるわけではありません。
例2:自分自身を使った更新(よく使うパターン)
count = 0
count = count + 1
print(count) # => 1
Python解説:右辺の count は「代入前の値」を指し、それに 1 を足した結果を左辺の count に入れます。これは「今の値を 1 増やす」操作です。
Pythonには短く書ける別形もあります(後述)。
4. よくある書き方(便利な短縮)
Augmented assignment(複合代入)
x = 5
x += 1 # x = x + 1 と同じ
x *= 3 # x = x * 3 と同じ
Python解説:+=, -=, *=, /=, などは「今の値を使って計算して、結果を上書きする」簡潔な方法です。
5. 複数の代入・同時代入
a, b = 1, 2 # a に 1、b に 2 を同時に代入
c = d = 0 # c と d に同じ値 0 を入れる
Python注意点:右辺の評価が済んでから左辺に割り当てられます(順序に気をつければ安全です)。
6. ミスしやすいポイント(初心者が陥りがち)
- 数学の等式と同じに考えると混乱します。
×「Aは常に B+3 と同じ」ではなく、○「代入した時点での値が A に入る」。 =の左右を入れ替えるとエラーや意図しない挙動になります(左辺は変数でなければならない)。
例:5 = xはエラー(値に名前を付けられない)。- ミュータブル(可変)なオブジェクトは代入後に中身が変わると見かけ上の値が変わることがある → 後述。
7. ミュータブル(可変)とイミュータブル(不変)についての注意
- 数値や文字列は 不変(immutable)です。代入は値のコピー(参照)を扱って結果として上書きと同等に見えます。
- リストなどは 可変(mutable)で、別の変数に代入すると「同じリストを指す参照」が渡るため、どちらかで中身を書き換えると両方に影響が出ます。
例:
a = [1, 2]
b = a # a と b は同じリストを参照する
b.append(3)
print(a) # => [1, 2, 3] (a も変わって見える)
Pythonポイント:オブジェクトの「参照」を扱っていることを理解するとバグを減らせます。
8. 練習問題
- 次のコードの出力は何でしょう?
x = 10
y = x + 5
x = 20
print(y)
Python- 次のコードの出力は何でしょう?
m = [0]
n = m
n[0] = 1
print(m)
Pythoncount = count + 1を短く書くとどうなりますか?
解答と解説
- 出力は
15。yはx + 5を評価したとき(x が 10 のとき)に15になり、その後xを 20 にしてもyは変わらない。 - 出力は
[1]。mとnは同じリストを参照しているため、n[0] = 1がmにも反映される。 count += 1が短縮表記。これはcount = count + 1と同じ意味。
まとめ(初心者が覚えておくべき短いチェックリスト)
=は「代入」:右を計算して左に保存する。- 代入後に右辺を変えても左は自動で変わらない(再代入が必要)。
A = A + 1は正しく使える(「今の値」を基に上書きする)。- ミュータブルなオブジェクトは参照の扱いに注意する(コピーしたつもりで両方変わることがある)。
- よく使う省略形:
+=,-=,*=,/=など。
