ホームページ >バックエンド開発 >Python チュートリアル >Pythonで2つのオブジェクトを比較するためのisメソッドと==メソッドの詳細な説明

Pythonで2つのオブジェクトを比較するためのisメソッドと==メソッドの詳細な説明

巴扎黑
巴扎黑オリジナル
2017-09-07 09:47:081335ブラウズ

この記事では、Python で 2 つのオブジェクトを比較する 2 つの方法についての関連情報を主に紹介します。この記事が、Python で 2 つのオブジェクトを比較する 2 つの方法を参照するのに役立つことを願っています。 2 つのオブジェクト

Python では、2 つのオブジェクトが等しいかどうかを比較する方法が 2 つあります。つまり、is と ==、それらは異なります

== は値を比較します (Java の等しいメソッドと同様)
  • 参照を比較します (Java の == に似た、メモリ アドレスの比較と見なされます)
  • For:

>>> n = 1
>>> n is 1
True
>>> b = '1'
>>> b is 1
False
>>> n == b
False

1 と '1' なので、それが値であるか参照であるかは異なります。 result is false

For:

>>> n = 1
>>> n is 1
True

ここで知識ポイントがあります。簡単に言うと、整数などのプリミティブ型の場合、参照比較は値の比較になります。ただし、Python は整数型の実装においてこの方法を採用します。 -5 から 256 までの場合、これらの数値を格納するために配列がメモリ内に予約され、次回使用するときに直接参照できます。この範囲外の数値については、新しい int オブジェクトが作成されます。簡単な例は次のとおりです。


#a和b的值超出256
>>> a = 257
>>> b = 257
>>> a is b
False

#a和b的值在-5和256之间
>>> a = 256
>>> b = 256
>>> a is b
True

上の例に示すように、それが -5~256 の整数である限り、Python は次のようにします。変数用の新しいメモリ領域は初期化されませんが、256 を超えると、新しい領域が割り当てられます。

以下に示すように、2 つのオブジェクトの ID を出力することで、2 つのオブジェクトのメモリ アドレスの違いを直接確認することもできます。

以上がPythonで2つのオブジェクトを比較するためのisメソッドと==メソッドの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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