ホームページ  >  記事  >  バックエンド開発  >  Pythonの演算子「==」と「is」の詳しい解説

Pythonの演算子「==」と「is」の詳しい解説

WBOY
WBOYオリジナル
2016-12-05 13:27:201119ブラウズ

はじめに

2 つの演算子 is と == の違いについて説明する前に、Python のオブジェクトに含まれる 3 つの基本要素、つまり id (アイデンティティ)、python type() (データ型)、および value (値) について知っておく必要があります。 is と == は両方ともオブジェクトの比較と判定に使用されますが、オブジェクトの比較と判定の内容が異なります。具体的な違いを見てみましょう。

Python では 2 つのオブジェクトが等しいかどうかを比較する方法が 2 つあり、簡単に言えば、それらの違いは次のとおりです。 は、2 つの参照が同じオブジェクトを指しているかどうかを比較します (参照比較)。

== は 2 つのオブジェクトが等しいかどうかを比較します。

リーリー

実施原則

は両者が同じオブジェクトかどうかを比較するので、比較されるのはメモリアドレス(IDが同じかどうか)です。

== は値の比較です。 int、str などの不変オブジェクトは、値の比較を直接実行します。 Python に既知のオブジェクトの場合、比較のために __eq__ 関数が呼び出されます。 (実際には、既知のオブジェクトも組み込みの __eq__ 関数を通じて比較する必要があります)。カスタム オブジェクトの場合、__eq__ 関数が実装されている場合は比較されます。実装されていない場合、結果は == と同じになります。

オブジェクトキャッシュメカニズム


Python は比較的小さいオブジェクトをキャッシュします。次に比較的小さいオブジェクトが使用されると、キャッシュ領域内を検索します。新しいメモリは開きませんが、その小さいオブジェクトのアドレスを割り当て続けます。新しい価値。例:

リーリー

計算された代入はバッファ領域を使用しません。これは最初のコード例からわかります。
文字列の場合、intern 関数を使用してバッファの使用を強制できます。

概要

以上がこの記事の内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご不明な点がございましたら、メッセージを残してご連絡ください。

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