Python id() 関数
id()は、Python でオブジェクトの一意の識別子を取得するための組み込み関数です。
Python では、各オブジェクトには一意の整数識別子があり、この識別子はオブジェクトのライフサイクル中は一意で一定です。id()この識別子を返します。通常はオブジェクトのメモリアドレスに対応します。
単語の意味: idであるidentifier(識別子)の略語です。
基本構文とパラメータ
構文形式
id(object)
パラメータ説明
- パラメータ object:
- 型:任意のオブジェクト
- 説明:識別子を取得するオブジェクト。
関数説明
- 戻り値:オブジェクトの一意の識別子を表す整数を返します。
- 特徴:オブジェクトのライフサイクル中、id は一定で変わりません。
実例
例1:基本的な使い方
実例
# 整数の id を確認
a = 10
print(id(a)) # 出力: 整数(例: 4302400000)
# 文字列の id を確認
s = "hello"
print(id(s)) # 出力: 整数
# リストの id を確認
lst = [1, 2, 3]
print(id(lst)) # 出力: 整数
a = 10
print(id(a)) # 出力: 整数(例: 4302400000)
# 文字列の id を確認
s = "hello"
print(id(s)) # 出力: 整数
# リストの id を確認
lst = [1, 2, 3]
print(id(lst)) # 出力: 整数
実行結果の想定:
オブジェクトの一意の識別子(整数)を返します。
コード解説:
- すべてのオブジェクトには一意の id があります。
- 異なるオブジェクトの id は通常異なります。
例2:オブジェクトの同一性の検証
実例
# 同じオブジェクトを複数回参照
a = [1, 2, 3]
b = a
print(id(a) == id(b)) # 出力: True(a と b は同じオブジェクトを指す)
# オブジェクトをコピー
a = [1, 2, 3]
b = a.copy()
print(id(a) == id(b)) # 出力: False(a と b は異なるオブジェクト)
# 整数キャッシュ(小整数)
a = 256
b = 256
print(id(a) == id(b)) # 出力: True(小整数はキャッシュされる)
a = 257
b = 257
print(id(a) == id(b)) # 出力: False(大きな整数はキャッシュされない)
a = [1, 2, 3]
b = a
print(id(a) == id(b)) # 出力: True(a と b は同じオブジェクトを指す)
# オブジェクトをコピー
a = [1, 2, 3]
b = a.copy()
print(id(a) == id(b)) # 出力: False(a と b は異なるオブジェクト)
# 整数キャッシュ(小整数)
a = 256
b = 256
print(id(a) == id(b)) # 出力: True(小整数はキャッシュされる)
a = 257
b = 257
print(id(a) == id(b)) # 出力: False(大きな整数はキャッシュされない)
実行結果の想定:
True False True False
コード解説:
- 使用して
==id を比較することで、同じオブジェクトかどうかを判断できます。 - Python は小整数(-5 から 256)をキャッシュするため、同じ値の変数は id を共有する場合があります。
例3:実際の応用
実例
# 同じオブジェクトかどうかを確認
def check_same_object(a, b):
return id(a) == id(b)
# テスト
list1 = [1, 2, 3]
list2 = list1
list3 = [1, 2, 3]
print(check_same_object(list1, list2)) # 出力: True
print(check_same_object(list1, list3)) # 出力: False
# 辞書のキーとして使用(あまり一般的ではないが)
d = {}
obj = object()
d[obj] = "value"
print(d[obj]) # 出力: value
# デバッグ時にオブジェクトを確認
class Person:
pass
p = Person()
print(f"オブジェクト id: {id(p)}")
print(f"クラス id: {id(Person)}")
def check_same_object(a, b):
return id(a) == id(b)
# テスト
list1 = [1, 2, 3]
list2 = list1
list3 = [1, 2, 3]
print(check_same_object(list1, list2)) # 出力: True
print(check_same_object(list1, list3)) # 出力: False
# 辞書のキーとして使用(あまり一般的ではないが)
d = {}
obj = object()
d[obj] = "value"
print(d[obj]) # 出力: value
# デバッグ時にオブジェクトを確認
class Person:
pass
p = Person()
print(f"オブジェクト id: {id(p)}")
print(f"クラス id: {id(Person)}")
実行結果の想定:
True False value 对象 id: ... 类 id: ...
id()主にデバッグ、オブジェクトの同一性の確認、Python のメモリ管理の理解などに使用されます。
その他の拡張
Python3 組み込み関数