ホームページ >バックエンド開発 >Python チュートリアル >Python では「== None」より「is None」が好まれるのはなぜですか?

Python では「== None」より「is None」が好まれるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 20:29:01246ブラウズ

Why is

Python について なし 比較: "is" と ==

Python 開発者は、変数を比較するときに "is" と == のどちらを使用するかという問題によく遭遇します。なしへ。どちらのオプションも有効な構文になりますが、優先されるアプローチは、目的の比較によって異なります。

オブジェクトの同一性と同等性

主な違いは、オブジェクトの性質にあります。比較: オブジェクトの同一性または同等性。

  • オブジェクトの同一性 (is): 2 つであるかどうかを比較します。変数はメモリ内のまったく同じオブジェクトを参照します。
  • 等価 (==): 2 つのオブジェクトの値を比較します。

None の場合、そのようなオブジェクトは 1 つだけです。 Pythonで。したがって、my_var is None は、my_var が同じ None オブジェクトを参照しているかどうかをチェックします。

None が好ましいのはなぜですか?

両方とも None かつ == None であるにもかかわらず、は有効な構文であり、None はより明示的であり、エラーが発生しにくいと考えられます。

次の点を考慮してください。状況:

class Negator(object):
    def __eq__(self, other):
        return not other

thing = Negator()
print(thing == None)  # True
print(thing is None)  # False

この例では、Negator クラスは == 演算子をオーバーライドして、常に引数の逆を返します。結果として、thing == None は True と評価され、値が等しいことを示します。ただし、thing は None が正しく False と評価され、thing と None が同じオブジェクトではないことを示します。

gt;結論

との比較を含め、オブジェクトの同一性を確認する場合なし。推奨されるアプローチです。これにより明確さが確保され、オーバーライドされた等価演算子によって引き起こされる潜在的な曖昧さが防止されます。覚えておいてください。 は同一性をチェックし、== は等価性をチェックします。

以上がPython では「== None」より「is None」が好まれるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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