Pythonの不変(イミュータブル)データ型とは?種類と特徴をわかりやすく解説
不変(イミュータブル)オブジェクトとは?
メモリ上に一度作成されたオブジェクトの内容を、後から変更できないものを「不変(イミュータブル)なオブジェクト」と呼びます。不変オブジェクトに対して変更操作を行うと、元のオブジェクトが書き換えられるのではなく、新しいオブジェクトが生成されるのが特徴です。
Pythonにおける主な不変データ型の一覧
Pythonでは、以下のデータ型が不変(イミュータブル)として扱われます。
- 数値型(int・float・complex):整数や浮動小数点数などの数値オブジェクト
- 文字列型(str):文字単位での書き換えができない文字列
- タプル(tuple):作成後に要素の追加・削除・変更ができないシーケンス
- frozenset:変更不可のセット(集合)
- bytes:変更不可のバイト列
コード例:文字列は変更できない
s = "hello"
s[0] = "H" # TypeError が発生するこのように、不変オブジェクトの一部を直接書き換えようとするとエラーになります。代わりに s = "H" + s[1:] のように、新しい文字列を作成する必要があります。
注意点:辞書(dict)は可変(ミュータブル)
よくある誤解として「辞書も不変である」と説明されることがありますが、これは正しくありません。Pythonの辞書型(dict)は可変(ミュータブル)であり、作成後でもキーの追加・更新・削除が自由に行えます。
同様に、リスト(list)やセット(set)も可変オブジェクトです。これらは内容をその場で変更できるため、不変データ型とは区別されます。
まとめ
Pythonの不変データ型には、数値型・文字列型・タプル・frozenset・bytes があります。不変オブジェクトはハッシュ化可能であるため、辞書のキーやセットの要素として利用できるという利点もあります。一方、リスト・辞書・セットは可変であり、柔軟なデータ操作が必要な場面で活用されます。用途に応じて適切なデータ型を選ぶことが、安全で効率的なPythonプログラミングの第一歩です。
-
Pythonのファイルオブジェクトの主な属性とメソッドを徹底解説
Pythonでは、open()関数を使ってファイルを開くと「ファイルオブジェクト」が返されます。このオブジェクトは、ファイルの読み書きや状態管理を行うための多数の属性とメソッドを持っています。本記事では、特によく使われるメソッドと属性について、具体例を交えながらわかりやすく解説します。 よく使われるファイルオブジェクトのメソッド close() ― 開いたファイルを閉じます。ファイル操作が終わったら必ず呼び出し、リソースを解放しましょう。 next() ― ファイルをイテレータとして扱う際に呼び出されるメソッドです。for line in f: のようにforループでファイルを回すとき、この
-
Pythonのデータ型と型変換をわかりやすく解説
この記事では、Pythonにおける主要なデータ型の種類と、それぞれの使い方、そしてデータ型同士を変換する方法について詳しく解説します。 Pythonの組み込みデータ型一覧 Pythonでは変数を作成・宣言する際に、さまざまなデータ型を持たせることができます。Pythonには以下のような組み込みデータ型が用意されています。 str(文字列) int、float、complex(数値) list、tuple(シーケンス) dict(辞書) set(集合) bool(ブール値) bytes、bytearray(バイナリ) それでは、各データ型の特徴と作成方法を順番に見ていきましょう。 文字列型: