ホームページ  >  記事  >  バックエンド開発  >  Python の id() 関数は何を指しますか?

Python の id() 関数は何を指しますか?

不言
不言オリジナル
2018-04-16 16:58:586098ブラウズ

この記事では、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。