【Python入門】Pythonのid関数とは?使い方と活用方法を徹底解説(Python 3.11)

Python

はじめに

Pythonを学び始めると、変数やオブジェクトの概念を理解することが重要になります。その中で、オブジェクトの一意な識別子を取得する id 関数は、Pythonのメモリ管理やオブジェクトの比較を理解するのに役立つ機能です。本記事では、 id 関数の基本的な使い方から応用例までを詳しく解説します。

id関数とは?

Pythonの id 関数は、オブジェクトの一意な識別番号(メモリアドレス)を返します。この識別番号を使うことで、変数が同じオブジェクトを参照しているのかどうかを確認できます。

id関数の基本構文

Pythonの id 関数は、以下の構文で使用できます。

id(object)
  • object:識別番号を取得したいオブジェクト
  • 戻り値:オブジェクトの一意な識別番号(整数値)

id関数の使用例

以下の例では、 id 関数を使って変数の識別番号を確認し、同じオブジェクトを参照しているかどうかを調べます。

x = 10
y = x
print(id(x))  # xの識別番号を出力
print(id(y))  # yの識別番号を出力(xと同じ)

z = 10
print(id(z))  # zの識別番号を出力(Pythonの最適化によりxと同じになることがある)

この例では、 y = x により yx と同じオブジェクトを参照しています。そのため、 id(x)id(y) の値は一致します。

id関数の応用例

ミュータブル(変更可能)なオブジェクトとイミュータブル(変更不可)なオブジェクトの違い

id 関数を使用して、リスト(ミュータブル)と整数(イミュータブル)の挙動の違いを確認します。

# イミュータブル(整数)の場合
num1 = 100
num2 = num1
print(id(num1), id(num2))  # 同じ識別番号

num2 += 1
print(id(num1), id(num2))  # 異なる識別番号(num2が新しいオブジェクトを参照するため)

# ミュータブル(リスト)の場合
list1 = [1, 2, 3]
list2 = list1
print(id(list1), id(list2))  # 同じ識別番号

list2.append(4)
print(list1)  # [1, 2, 3, 4](list1も変更される)
print(id(list1), id(list2))  # 変更後も同じ識別番号

このように、ミュータブルなオブジェクトは同じ識別番号を保持し続けますが、イミュータブルなオブジェクトは変更されると新しいオブジェクトが作成されます。

まとめ

id 関数は、オブジェクトの識別番号(メモリアドレス)を取得する便利な関数です。同じオブジェクトを参照しているかどうかを調べたり、イミュータブルとミュータブルなオブジェクトの挙動を理解するために活用できます。Pythonのオブジェクト管理をより深く理解するために、ぜひ id 関数を試してみてください。