ホームページ >バックエンド開発 >Python チュートリアル >Python の「is」演算子が整数に対して予期しない動作をするのはなぜですか?

Python の「is」演算子が整数に対して予期しない動作をするのはなぜですか?

DDD
DDDオリジナル
2024-12-28 04:13:11912ブラウズ

Why Does Python's

整数の "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 サイトの他の関連記事を参照してください。

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