GrammarPrPython

【Python】ミュータブルとイミュータブルを理解する

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回しか評価されないのでリストに値が追加されていく形になります。

デフォルト値はnum_lists = []の部分です。関数を呼び出したときに引数を与えないとデフォルト値が使用されます。

これを避けたい場合は関数の中で空のリストを生成します。

スポンサーリンク

まとめ

Pythonにおけるミュータブルとイミュータブルの違いを解説しました。それぞれの性質をきちんと理解することで、意図しない動作を回避できます。

勉強方法にお困りの方はこちらの記事もご参考にしてください。

コメント

タイトルとURLをコピーしました