Pythonではオブジェクトによってミュータブルとイミュータブルに分類されます。
本記事ではこの2つの違いと注意点について解説します。
Pythonには
実力を証明できる資格があります
PythonにはPython3エンジニア認定基礎試験という試験があります。
試験範囲がPythonチュートリアル(公式ドキュメント)となっているため、Pythonの基礎を全て押さえることができます。
- 独学で勉強していて、どれくらい理解できているのか調べたい
- 今の仕事も続けつつ、キャリアの幅を広げたい
- 新しい技術としてPythonを習得したい
そんな方は是非詳細をご確認ください。
ミュータブルとは値を変更できるオブジェクトのこと
ミュータブルとは値を変更できるオブジェクトのことです。
主な型はリストや辞書などがあります。
イミュータブルとは値を変更できないオブジェクトのこと
イミュータブルとは値を変更できないオブジェクトのことです。
主な型はタプルや文字列などがあります。
id関数を使って確認する
ミュータブルなオブジェクトは、要素の追加・削除などをしてもIDは変わりません。またイミュータブルなオブジェクトは、同じIDのまま値を変更することはできません。
関連記事
【Python】識別値を取得できるid関数について解説
ミュータブル・イミュータブルオブジェクトの注意点
ミュータブル・イミュータブルオブジェクトの注意点を解説します。
同じオブジェクトを参照する時としない時がある
Pythonにおいてミュータブルオブジェクトは同じ値を持ったとき、違うオブジェクトを参照することが保証されていますが、イミュータブルオブジェクトは同じオブジェクトを参照するときもあるし、そうでないときもあります。
つまり、a = 1、b = 1としたとき、a と b は値 1 を持つ同じオブジェクトを参照する時としないときがあります。しかし、c = []、d = [] とすると、 c と d は異なったリストを参照することが保証されているということです。
詳細はこちらをご確認ください。
デフォルト値は1回しか評価されない
関数のデフォルト値は1回しか評価されません。
よって、ミュータブルオブジェクトの場合に影響を受けます。
1回しか評価されないのでリストに値が追加されていく形になります。
これを避けたい場合は関数の中で空のリストを生成します。
まとめ
Pythonにおけるミュータブルとイミュータブルの違いを解説しました。それぞれの性質をきちんと理解することで、意図しない動作を回避できます。
勉強方法にお困りの方はこちらの記事もご参考にしてください。
コメント