id(object)
関数: 返されるのは、一意で変更されないオブジェクトの「ID カード番号」ですが、重複しないライフサイクルでは同じ ID 値が表示される場合があります。ここで説明するオブジェクトは、特に複合型オブジェクト (クラス、リストなど) を指します。文字列や整数などの型の場合、値が変化すると変数の ID も変化します。
Python バージョン: Python2.x Python3.x
Python 英語公式ドキュメント説明:
オブジェクトの「アイデンティティ」を返します。これは、このオブジェクトに対して一意かつ定数であることが保証されている整数 (または長整数) です。ライフタイムが重複しない 2 つのオブジェクトは、同じ id() 値を持つ可能性があります。
CPython 実装の詳細: これはメモリ内のオブジェクトのアドレスです。
注: オブジェクトの id 値はCPython では インタプリタはメモリ内のアドレスを表します (Python の C 言語で実装されたインタプリタ)。
コード例:
class Obj(): def __init__(self,arg): self.x=arg if __name__ == '__main__': obj=Obj(1) print id(obj) #32754432 obj.x=2 print id(obj) #32754432 s="abc" print id(s) #140190448953184 s="bcd" print id(s) #32809848 x=1 print id(x) #15760488 x=2 print id(x) #15760464
2 つのオブジェクトが等しいかどうかを判断するために is を使用する場合、基礎となるのは ID 値です
is と == の違いは、is はメモリ内での比較であるのに対し、== は値の比較