こんにちは、ナナです。
Pythonは「オブジェクト指向言語」と呼ばれるプログラミング言語であり、あらゆる情報を「オブジェクト」という単位で管理しています。
オブジェクトには「オブジェクトID」という識別子が与えられて管理されています。PythonにおけるオブジェクトIDを取得するための「id関数」の使い方を学びましょう。
本記事では次の疑問点を解消する内容となっています。
では、「id関数」と「オブジェクトID」について学んでいきましょう。
オブジェクトに付与される「オブジェクトID」とは?
「オブジェクト」にはオブジェクト同士を判別するための「オブジェクトID」と呼ばれる識別子が紐づいており、一意に特定できる仕組みになっています。
Pythonのオブジェクト
Pythonでは「数」「文字列」「リスト」「タプル」といったあらゆる情報が「オブジェクト」として管理されています。
つまり、次のような情報は全て「オブジェクト」として管理されています。
10 # 整数値
3.14 # 浮動小数点数
"Hello" # 文字列
[10, 20, 30] # リスト
(40, 50, 60) # タプル
これらの「オブジェクト」に対して「オブジェクトID」が1つ紐づきます。
Pythonの情報は『オブジェクト』で管理される。これが基本です。
id関数を使ったプログラム例
『オブジェクトID』は、「id関数」を使うことで取得することができます。
id関数の仕様
関数仕様 | id(object) |
引数1 | オブジェクト |
戻り値 | int型:オブジェクトを識別するID |
引数にオブジェクトを指定すると『オブジェクトID』が戻り値で取得できます。シンプルな関数ですね。
id関数の引数にオブジェクトを指定してみよう!
まずは、id関数の引数にオブジェクトを指定するケースを解説します。
print(id(10))
print(id(3.14))
print(id("Hello"))
print(id([10, 20, 30]))
print(id((40, 50, 60)))
実行結果は次のように、オブジェクト毎に異なる『オブジェクトID』が付与されているのがわかりますね。
140720290641008
2705538589368
2705548071856
2705547616776
2705551508824
オブジェクト毎にユニークな『オブジェクトID』が付与されます。このIDでオブジェクトを識別できるんです。
id関数の引数に変数を指定してみよう!
続いて、id関数の引数には『変数』を指定することも可能です。
# 変数にオブジェクトの参照を設定
num1 = 10
num2 = 3.14
moji = "Hello"
list1 = (10, 20, 30)
# オブジェクトIDを表示
print(id(10))
print(id(num1))
print(id(3.14))
print(id(num2))
print(id("Hello"))
print(id(moji))
print(id((10, 20, 30)))
print(id(list1))
140719496017008
140719496017008
2446875796152
2446875796152
2446880040864
2446880040864
2446879999320
2446879999320
オブジェクトを指定した場合も、変数を指定した場合も同様のオブジェクトIDが表示されましたね。
このようにid関数に『変数』を指定した場合は、変数が参照しているオブジェクトIDが取得できます。
オブジェクトIDを考察すると、変数がいったい何を参照しているかを解析することができます。