変数間における代入
変数の間で代入処理を行うと、変数に格納されているオブジェクトIDがコピーされる。
>>> x = 1
>>> y = x
>>> print(id(x))
>>> print(id(y))
この例では、変数x,yは同じインスタンス「1」に割り当てられる。
>>> x = 1
>>> y = 1 # (1)
>>> print(id(x))
>>> print(id(y))
既存のインスタンスと同じ値を生成しようとすると、インスタンスの生成は行わずに既存インスタンスのオブジェクトIDが与えられることがある。これはメモリ節約を目的としている。https://scrapbox.io/files/65024ba2a6ed21001ca9de80.png
 図:インスタンス「1」が複数の変数から参照されるイメージ
C言語との比較
C言語において変数間で代入を行うと、変数に格納されているデータがコピーされる。
code:assign2.c
int x, y;
x = 1;
y = x;
値「1」がコピーされた結果、メモリ上には2つの「1」が存在することになる。
https://scrapbox.io/files/65024c97afa9d4001b487872.png
 図:C言語の場合、「値」がコピーされる
/icons/hr.icon
※ ブラウザのバックボタンで戻る