GrammarPrPython

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

Pythonではオブジェクトによってミュータブルとイミュータブルに分類されます。
本記事ではこの2つの違いと注意点について解説します。

スポンサーリンク

ミュータブルとは値を変更できるオブジェクトのこと

ミュータブルとは値を変更できるオブジェクトのことです。
主な型はリストや辞書などがあります。

スポンサーリンク

イミュータブルとは値を変更できないオブジェクトのこと

イミュータブルとは値を変更できないオブジェクトのことです。
主な型はタプルや文字列などがあります。

スポンサーリンク

id関数を使って確認する

ミュータブルなオブジェクトは、要素の追加・削除などをしてもIDは変わりません。またイミュータブルなオブジェクトは、同じIDのまま値を変更することはできません。

スポンサーリンク

ミュータブル・イミュータブルオブジェクトの注意点

ミュータブル・イミュータブルオブジェクトの注意点を解説します。

同じオブジェクトを参照する時としない時がある

Pythonにおいてミュータブルオブジェクトは同じ値を持ったとき、違うオブジェクトを参照することが保証されていますが、イミュータブルオブジェクトは同じオブジェクトを参照するときもあるし、そうでないときもあります。

つまり、a = 1、b = 1としたとき、a と b は値 1 を持つ同じオブジェクトを参照する時としないときがあります。しかし、c = []、d = [] とすると、 c と d は異なったリストを参照することが保証されているということです。

詳細はこちらをご確認ください。

デフォルト値は1回しか評価されない

関数のデフォルト値は1回しか評価されません。
よって、ミュータブルオブジェクトの場合に影響を受けます。

1回しか評価されないのでリストに値が追加されていく形になります。

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

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

スポンサーリンク

まとめ

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

PC・タブレットで学習したい方はAmazonのKindle Unlimitedを利用するのがオススメ!!

\まずは無料で30日間お試し!!(無料期間中に解約可)/

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

コメント

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