ウェブサイト検索

Python の識別演算子と「==」と「IS」演算子の違いを学ぶ


この記事は主に、Python の重要な演算子 (「IDENTITY OPERATOR 」) と、ID 演算子の違い (であるない) を説明するためにまとめられています。 ) 比較演算子 (==) から。

アイデンティティ演算子

恒等演算子 (「is 」 および 「is not 」) は、オブジェクトのメモリ位置を比較するために使用されます。オブジェクトがメモリ内に作成されると、そのオブジェクトに一意のメモリ アドレスが割り当てられます。

  • ‘==’ は、両方のオブジェクト値が同一かどうかを比較します。
  • ‘is’ は、両方のオブジェクトが同じメモリ位置に属しているかどうかを比較します。

3 つの文字列オブジェクト NameName1、および Name2 を作成します。文字列オブジェクト NameName2 は同じ値を保持し、Name1 は異なる値を保持します。

これらのオブジェクトを作成すると、バックグラウンドでそのオブジェクトがメモリ内に作成され、プログラムの存続期間中使用できるようになります。

これで、比較演算子 “== ” を使用して、両方のオブジェクト値が同じかどうかを確認できるようになりました。比較演算子の出力はブール値 (True または False) になります。

2 つの値を比較して等しいかどうかを判断したので、恒等演算子がどのように機能するかを見てみましょう。

組み込みの Id() 関数は、オブジェクトの「ID 」を取得するために使用されます。オブジェクトの存続期間中、オブジェクトにとって一意かつ一定となる整数。

わかりやすくするために、これはあなたに割り当てられた一意の政府IDまたはEmp IDであると考えてください。同様に、一意の整数値が各オブジェクトに割り当てられます。

“is ” 演算子を使用して 2 つのオブジェクト参照を比較できるようになりました。

ID 演算子を使用して NameName1 または Name2 を比較すると、バックエンドでは単に ”id(Name) が実行されます。 ) == id(Name2) ”id(Name)id(Name2) はどちらも同じメモリ位置を共有しているため、True を返します。

ここからが興味深い部分です。前の例を見てください。NameName1 の両方が同じ値を持ち、id() 関数を実行すると同じ整数値を返します。以下のスクリーンショットで同じ値を共有しているにもかかわらず、「Name_new 」オブジェクトと「Name_le 」オブジェクトが同一ではないのはなぜだと思いますか?

これは Python 設計の実装が原因です。範囲 (-5,256) の整数オブジェクトと 20 文字以上の文字列オブジェクトを作成すると、同じ値の別のオブジェクトをメモリに作成するのではなく、これらのオブジェクトがすでに作成されたオブジェクトへのポインタとして機能します。

以下の図は、この記事でこれまで見てきたことを明確に示しています。

まとめ

この記事では恒等演算子とは何かを見てきました。比較演算子と恒等演算子の使用方法、オブジェクトがメモリ内に作成される方法の実装を設計します。