Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonにおける不変(イミュータブル)とは?意味と特徴をわかりやすく解説

Pythonにはさまざまなデータ型のオブジェクトが用意されており、これらはすべてメモリ上に格納されます。その中で、生成後に内容を変更できるオブジェクトと、生成後に内容を変更できないオブジェクトの2種類が存在します。後者の性質を「不変(イミュータブル)」と呼びます。

不変(イミュータブル)オブジェクトとは

整数(int)、浮動小数点数(float)、複素数(complex)といった数値オブジェクトは、メモリ上に確保された内容を後から書き換えることができません。このように、一度作成すると内部の状態を変更できないオブジェクトを不変(イミュータブル)といいます。

さらに、文字列(str)やタプル(tuple)も不変なオブジェクトです。たとえば文字列の場合、特定の1文字だけを差し替える操作は行えず、変更したい場合は新しい文字列を生成する必要があります。タプルも同様に、要素の追加・削除・変更が一切できません。

可変(ミュータブル)オブジェクトとは

一方で、リスト(list)や辞書(dict)、集合(set)などは可変(ミュータブル)なオブジェクトです。リストであれば要素の追加・削除・更新を自由に行えますし、辞書もキーに対応する値をいつでも書き換えることが可能です。

主なデータ型の分類まとめ

分類データ型特徴
不変(イミュータブル)int / float / complex / str / tuple生成後に内容を変更できない
可変(ミュータブル)list / dict / set要素の追加・削除・変更が可能

不変性を理解することのメリット

イミュータブルなオブジェクトは内容が変わらないため、複数の場所から安全に参照できたり、辞書のキーや集合の要素として利用できたりするという利点があります。一方、可変なオブジェクトは柔軟に編集できる反面、意図しない副作用が発生することもあるため、両者の違いを正しく理解しておくことはバグの少ないPythonコードを書くうえで非常に重要です。

  1. PythonのCGIとは?仕組みとサーバー設定方法をわかりやすく解説

    CGI(Common Gateway Interface:共通ゲートウェイインターフェース)は、HTTPサーバーなどの情報サーバーと外部のゲートウェイプログラムがやり取りするための標準規格です。現在のバージョンはCGI/1.1であり、CGI/1.2が策定中です。Webブラウジングの流れCGIの概念を理解するために、ハイパーリンクをクリックして特定のWebページやURLを閲覧するときに何が起こるのかを見てみましょう。ブラウザがHTTP Webサーバーに接続し、URL(つまりファイル名)を要求します。WebサーバーはURLを解析してファイル名を探します。該当するファイルが見つかればそれをブラウザへ

  2. Pythonのファイルオブジェクトとは?open関数によるファイル操作の基本を徹底解説

    Pythonでは、ファイルを読み書きする際に特別なライブラリをインポートする必要はありません。ファイル操作は言語にネイティブに組み込まれているためです。 まず最初に行うのは、組み込み関数 open() を使ってファイルオブジェクトを取得することです。open() 関数はファイルを開き、ファイルオブジェクトを返します。このファイルオブジェクトには、開いたファイルから情報を取得したり、内容を操作したりするためのメソッドや属性が含まれています。 ファイルとは何か? ファイル操作を行う前に、「ファイルとは何か」を理解しておきましょう。ファイルとは、関連する情報を保存するためにディスク上に確保された「名