ホームページ >バックエンド開発 >Python チュートリアル >Python の「is」演算子が整数に対して予期しない動作をするのはなぜですか?
整数の "is" 演算子の予期しない動作
Python の "is" 演算子は、2 つのオブジェクトの同一性を比較するために使用されます。指定されたコードでは、次の動作は予期しないように見えます:
>>> a = 256 >>> b = 256 >>> a is b True # Expected result >>> a = 257 >>> b = 257 >>> a is b False # This is surprising, despite both values being equal.
この動作を理解するには、Python の整数の実装を考慮する必要があります。小さな整数 (特に -5 から 256 までの整数) の場合、Python はそれらを不変オブジェクトとして保存します。複数の変数がそのような小さな整数を参照する場合、それらはすべて同じ基礎となるオブジェクトを指します。
これは最初の比較を説明しています。ここで、a と b は両方とも同じオブジェクトへの参照であるため、is b は True を返します。ただし、256 より大きい整数の場合、Python はそれらを新しいオブジェクトとして扱うため、a = 257 と b = 257 は別個のオブジェクトを作成し、a is b は正しく False を返します。
この実装の詳細に依存しないようにするには、次のようにします。 == という等価演算子を使用して 2 つの任意のオブジェクトを比較する方が良いでしょう。これは、オブジェクトの同一性に関係なく、オブジェクトの値が等しいかどうかをチェックします。
以上がPython の「is」演算子が整数に対して予期しない動作をするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。