
immutableの変更不可というのは、同じオブジェクト(id)のまま、値だけを変更することはできないという意味。変更時にはidも一緒に変更される。
""" Pythonの場合、イミュータブル(不変体)な整数や文字列であっても"参照渡し"になっているが、整数や文字列のような
イミュータブルについては、そのままではidを変更できないので、値の定義後に計算などでその値が更新されると新しいidが
生成されその中に格納される
"""
>>> x = 10 #(int)
>>> id(x)
4303002192
>>> x += 5
>>> x
15
>>> id(x)
4303002352
>>> x = 'a' #(str)
>>> id(x)
4304262320
>>> x = 'a' * 3
>>> x
'aaa'
>>> id(x)
4304390320
"""ミュータブルなリストの場合、メソッドや代入文を使って値を変更してもidは変わらない。"""
>>> lst = [1, 3, 5]
>>> lst
[1, 3, 5]
>>> id(lst)
4304378112
>>> lst.append(7) #メソッドを使って追加
>>> lst
[1, 3, 5, 7]
>>> id(lst)
4304378112
>>> lst += [9] #代入文をつかって追加
>>> lst
[1, 3, 5, 7, 9]
>>> id(lst)
4304378112
"""リストと同じ、シーケンスデータ型のイミュータブルなtupleに追加した場合。tupleの場合は代入文しかない。
追加できているが、idは変更されている。
"""
>>> tpl = (1, 3, 5)
>>> id(tpl)
4305086208
>>> tpl += 7,
>>> tpl
(1, 3, 5, 7)
>>> id(tpl)
4305071216