Pythonのイミュータブルとは?変更できないデータ型の特徴を解説
生徒
「先生、イミュータブルって何ですか?名前が難しそうです…」
先生
「イミュータブルとは『変更できない』という意味ですよ。Pythonのいくつかのデータ型は一度作ると中身を変えられないんです。」
生徒
「どういうときに便利なんですか?」
先生
「たとえば文字列やタプルはイミュータブルだから、安心して使えるんですよ。それでは、例を見ながら学びましょう!」
1. イミュータブルとは?
イミュータブル(immutable)とは、「変わらない」「変更できない」という意味の英語です。プログラミングでは、一度作った値を後から変えてはいけないデータ型を指します。
初心者の方には、粘土細工に例えるとわかりやすいです。粘土(mutable)は揉んで形を変えられますが、石(immutable)は一度できたら形が変えられません。
2. イミュータブルな代表的なデータ型
Pythonでイミュータブルなデータ型はいくつかあります。代表的なものは次の通りです:
- 文字列(str)
- 数値(int, float)
- タプル(tuple)
- frozenset
これらは一度作ると「中身が変わらない」ため、重要な値を安全に使いたいときに便利です。
3. 文字列(str)はなぜイミュータブル?
text = "hello"
text[0] = "H" # エラーになります
print(text)
TypeError: 'str' object does not support item assignment
文字列は中身を直接書き換えることができません。変更したいときは、新しい文字列を作ります。
4. タプル(tuple)で中身を固定する
t = (1, 2, 3)
print(t[1])
# t[1] = 5 # これはダメです
タプルもイミュータブルなので、中の値を変更しようとするとエラーになります。
5. イミュータブルとミュータブルの違い
ミュータブルとは「変更できる(mutable)」という意味です。代表的なものはリスト(list)や辞書(dict)です。
lst = [1, 2, 3]
lst[0] = 10
print(lst) # [10, 2, 3]
リストは中身を書き換えられ、これはミュータブルです。
6. イミュータブルのメリットとは?
- 値が変わらないため、安全で予測しやすい
- 複数人での作業でも意図しない変更を防ぎやすい
- ハッシュ可能なので、辞書や集合のキーに使える
このように、変更不可の特性を活かして、信頼性の高いプログラムが作れます。
7. イミュータブルを使った実用例
例として、設定値や定数にイミュータブルを使うと安心です:
COLORS = ("red", "green", "blue")
PI = 3.1415
こうすると、プログラムの途中で値が変わらず、間違いが少なくなります。
8. イミュータブルを活かしてバグを減らそう
プログラムを書くときは、必要に応じてイミュータブルとミュータブルを使い分けましょう。不要な変更を避けて、コードの信頼性や読みやすさが向上します。