変数の値はメモリ上の特定の位置に保存されます。
アドレス (変数の値が書きこまれている場所) は「id」で取得できます。
以下のコードのように a, b はそれぞれ別の場所にありますが、a を代入してできた c のアドレスは a と同じになります。
つまり、a と c は同じものを指します (これを「同じオブジェクトである」といいます) なので、このような代入を参照渡しといいます。
ただし、c を作ったあとで a の値を書きかえると、a と c のアドレスは別のものになります。
これは、整数型の変数が「入れ物をそのままにして値だけ変更する」ということができず、値を変えようとするとオブジェクトとして別のものになってしまうためです。
このような性質をイミュータブル (immutable) といいます。
リストでも同様に a を代入して c を作るとオブジェクトとして同じものになります。
ただし、a の要素を書き換えてもオブジェクトとしての a と c は同じままです。
そのため、a[0] の要素を書き換えると c[0] もそれにあわせて変化します。
このような性質をミュータブル (mutable) といいます。
リストの要素ではなく、全体に新しい値を代入すると別なオブジェクトに変化し、a と c は別のものを指すようになります。
課題3
自分の氏名を1文字ずつ格納したリスト name 、学籍番号を整数として格納した変数 id を作り、それぞれを name_, id_ に代入して4つの変数の値を表示させたあと、name[0] と id
の値を別なものに書き換えてもう一度4つの変数の値を表示させるコードを書いてください。