この記事では、Python の id() 関数が何を指すのかを紹介します。これには特定の参照値があります。必要な方はそれを参照してください。id() 関数は、メモリを取得するために使用されます。オブジェクトのアドレス。 Python の id 関数が何なのか知らない友達も多いのではないでしょうか?次に、編集者が学習に役立つこの記事を共有します
公式 Python ドキュメントでの説明はid(object)
オブジェクトの「ID」を返します。これは整数 (または長整数) です。整数) は、このオブジェクトの存続期間中、一意かつ定数であることが保証されます。存続期間が重複しない 2 つのオブジェクトは、同じ id() 値を持つ可能性があります。CPython 実装の詳細: これは、メモリ内のオブジェクトのアドレスです。
1. id(object) は、一意で変更されないオブジェクトの「ID カード番号」を返します。ただし、重複しないライフサイクルでは同じ ID 値が出現する可能性があります。ここで説明するオブジェクトは、特に複合型オブジェクト (クラス、リストなど) を指します。文字列や整数などの型の場合、値が変化すると変数の ID も変化します。
2. オブジェクトの id 値は、CPython インタープリターのメモリ内のアドレスを表します。 (CPython インタプリタ: http://zh.wikipedia.org/wiki/CPython)
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 値です
class Obj(): def __init__(self,arg): self.x=arg def __eq__(self,other): return self.x==other.x if __name__ == '__main__': obj1=Obj(1) obj2=Obj(1) print obj1 is obj2 #False print obj1 == obj2 #True lst1=[1] lst2=[1] print lst1 is lst2 #False print lst1 == lst2 #True s1='abc' s2='abc' print s1 is s2 #True print s1 == s2 #True a=2 b=1+1 print a is b #True a = 19998989890 b = 19998989889 +1 print a is b #False
is と == の違いは、is はメモリ内の比較であり、== は値の比較であるということです
関連する推奨事項:
Python 放射コードの実装以上がPython の id() 関数は何を指しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。