カテゴリ: Python 更新日: 2025/12/26

Pythonのイミュータブルとは?変更できないデータ型の特徴を解説

Pythonのイミュータブルとは?変更できないデータ型の特徴を解説
Pythonのイミュータブルとは?変更できないデータ型の特徴を解説

先生と生徒の会話形式で理解しよう

生徒

「Pythonで『イミュータブル』って言葉を見かけました。なんか難しそう…」

先生

「イミュータブル(immutable)は、一度作ったら中身が変えられないデータ型のことだよ。最初はちょっと難しく感じるかもしれないけど、実はとても大事な考え方なんだ。」

生徒

「リストとか文字列も関係あるんですか?」

先生

「あるよ!たとえば文字列(str型)はイミュータブルなんだ。今回はイミュータブルとは何か、そしてどんなデータ型がイミュータブルなのかを一緒に見ていこう!」

1. イミュータブル(immutable)とは?

1. イミュータブル(immutable)とは?
1. イミュータブル(immutable)とは?

イミュータブルとは、変更できないという意味です。Pythonでは、ある種類のデータ型は作ったあとに中身を変えることができません

たとえば、文字列(str)、数値(intfloat)、タプル(tuple)などがイミュータブルな型です。

2. 文字列(str)はイミュータブルな例

2. 文字列(str)はイミュータブルな例
2. 文字列(str)はイミュータブルな例

Pythonでは、文字列は変更できません。試しに文字を直接変更しようとすると、エラーになります。


text = "Python"
text[0] = "J"

TypeError: 'str' object does not support item assignment

このように、文字列は部分的に書き換えられないのです。変更したいときは、新しい文字列を作ります。


text = "Python"
new_text = "J" + text[1:]
print(new_text)

Jython

3. 数値(int・float)もイミュータブル

3. 数値(int・float)もイミュータブル
3. 数値(int・float)もイミュータブル

数値型も同じです。一度作った値を変更することはできず、新しい値を代入し直すことになります。


x = 10
x = x + 5
print(x)

15

このとき、元の10が変わっているのではなく、10はそのままで、x15を指すようになっただけです。

4. タプル(tuple)もイミュータブル

4. タプル(tuple)もイミュータブル
4. タプル(tuple)もイミュータブル

タプルも中身を変更できないデータ型です。リストは変更できますが、タプルはできません。


data = (1, 2, 3)
data[0] = 100

TypeError: 'tuple' object does not support item assignment

タプルは安全に使えるため、データが変わらないことを保証したい場面に適しています。

5. イミュータブルとミュータブルの違いを表で比較

5. イミュータブルとミュータブルの違いを表で比較
5. イミュータブルとミュータブルの違いを表で比較

以下に、イミュータブルな型と、変更可能なミュータブルな型をまとめてみましょう。

データ型イミュータブルミュータブル
int(整数)
float(小数)
str(文字列)
tuple(タプル)
list(リスト)
dict(辞書)
set(集合)

6. なぜイミュータブルが重要なの?

6. なぜイミュータブルが重要なの?
6. なぜイミュータブルが重要なの?

イミュータブルなデータ型は、次のようなメリットがあります:

  • 他の場所から勝手に中身を変更される心配がない
  • プログラムの動作が予測しやすくなる
  • 辞書のキーや集合の要素として使える(リストは使えない)

そのため、安全性と効率性を高めるためにイミュータブル型が使われることが多いのです。

7. イミュータブルな型を活用する場面の例

7. イミュータブルな型を活用する場面の例
7. イミュータブルな型を活用する場面の例

例えば以下のような場面でイミュータブルな型が活躍します:

  • 設定値など、変わってほしくないデータを保持する
  • 辞書のキーとして複数の情報を使いたい(→タプルが使える)
  • 並列処理などでデータの整合性を保ちたいとき

イミュータブルをうまく使うことで、Pythonプログラムがより堅牢でエラーに強いコードになります。

まとめ

まとめ
まとめ

Pythonのイミュータブルを理解して安全なデータ設計を身につけよう

この記事では、Pythonにおけるイミュータブルという重要な考え方について、具体的なデータ型の例を交えながら学んできました。 イミュータブルとは、一度作成した後に中身を変更できない性質を持つデータ型のことを指します。 Pythonでは、文字列、整数、小数、タプルといった基本的なデータ型がイミュータブルに分類されます。 これらの型は、値そのものを書き換えることができないため、意図しない変更が起こりにくく、 プログラム全体の動作を安定させる重要な役割を果たしています。

特に文字列がイミュータブルである点は、Python初心者が最初につまずきやすいポイントですが、 理解してしまえばとても理にかなった仕組みだと分かります。 文字列を変更したように見える処理も、実際には新しい文字列を作成して変数の参照先を切り替えているだけです。 この仕組みを正しく理解することで、Pythonの変数の扱い方やメモリの考え方も自然と身についていきます。

イミュータブルとミュータブルの違いを意識する重要性

Pythonには、イミュータブルな型だけでなく、リストや辞書、集合のようなミュータブルな型も存在します。 ミュータブルな型は中身を自由に変更できるため柔軟性がありますが、その反面、思わぬ場所でデータが書き換えられてしまう可能性もあります。 そのため、どのデータが変更されてもよいのか、どのデータは固定して扱いたいのかを意識しながら、 データ型を選ぶことがPythonプログラミングではとても大切です。

イミュータブルな型は、変更されないことが保証されているため、 辞書のキーや集合の要素として安全に使うことができます。 また、複数の処理が同時に動くような場面でも、 データの内容が途中で変わらないため、バグの発生を抑えやすくなります。 Pythonで安定したコードを書いていくうえで、イミュータブルという考え方は欠かせない基礎知識と言えるでしょう。

イミュータブルな型を活用したサンプルプログラム

ここでは、イミュータブルなデータ型の特徴を意識した簡単なサンプルプログラムを見てみましょう。 文字列やタプルを使って、変更できないデータを安全に扱う例です。


user_name = "たろう"
user_age = 20

profile_key = ("名前", "年齢")

print(user_name)
print(user_age)
print(profile_key)

new_name = "はなこ"
user_name = new_name

print(user_name)

このように、イミュータブルなデータ型では、値そのものを書き換えるのではなく、 新しい値を作って変数に再代入するという形で処理を行います。 この考え方を理解しておくことで、Pythonの変数操作に対する誤解が減り、 エラーの少ないコードを書けるようになります。

イミュータブルを理解することで広がるPythonの理解

イミュータブルという概念は、単にデータが変更できないというだけではありません。 Pythonの内部動作や、なぜこのデータ型が安全なのかといった背景を理解するための重要な入口でもあります。 この考え方を身につけておくことで、関数の引数の扱い方や、 データの受け渡しに関するトラブルも減らすことができます。

Pythonを学習していく中で、リストや辞書を多用する場面が増えていきますが、 その一方で、あえてイミュータブルな型を選ぶべき場面も数多く存在します。 データの性質に応じて適切な型を選択できるようになることが、 Python中級者への大きな一歩と言えるでしょう。

先生と生徒の振り返り会話

生徒「イミュータブルって、ただ変更できないだけじゃなくて、安全に使うための仕組みなんですね。」

先生「その理解はとても大切だよ。データが変わらないことが保証されるのは大きなメリットなんだ。」

生徒「文字列や数値を変更しているつもりでも、実は新しく作り直しているというのが印象的でした。」

先生「そこに気づけたのはいいね。Pythonの変数の考え方がしっかり身についてきている証拠だよ。」

生徒「ミュータブルと使い分けることで、バグも減らせそうだと思いました。」

先生「その通り。イミュータブルを理解すると、より読みやすくて安全なPythonコードが書けるようになるよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Pythonのイミュータブルとは何ですか?初心者向けに簡単に教えてください

Pythonのイミュータブルとは「変更できないデータ型」のことを意味します。一度作った値を後から変更できないため、安全に扱える特徴があります。
カテゴリの一覧へ
新着記事
New1
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New2
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New3
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New4
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう