Python なし 比較: 'is' または ==?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-13 02:51:02689ブラウズ

Python None Comparison:

Python なしの比較: "is" または ==?

変数を None と比較することは、Python の一般的な操作です。ただし、使用されている構文に矛盾があることに気づいたかもしれません。そのため、「is」を使用するか == を使用するかという問題が生じます。

一般に、変数を None と比較する場合は、「is」を使用することをお勧めします。 。その理由は、「is」はオブジェクトの同一性をチェックするのに対し、== はオブジェクトの同等性をチェックするためです。 Python では、None オブジェクトは 1 つだけであるため、「is」を使用して何かを None と比較すると、それらが同じオブジェクトであれば常に True が返されます。

一方、== はオブジェクトの同等性をチェックします。これは、2 つのオブジェクトが等しい場合、たとえ同じオブジェクトでなくても、True を返すことを意味します。たとえば、次のコードについて考えてみましょう。

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

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

この例では、Negator クラスは、オブジェクトが等しくない場合に True を返す eq メソッドを定義します。 == を使用して None と比較すると、カスタム eq メソッドが呼び出され、結果は True になります。ただし、is を使用して比較すると、同じオブジェクトではないことがわかり、結果は False になります。

したがって、オブジェクトが None と同一であるかどうかを厳密にチェックする場合 (つまり、無効かどうかをチェックする場合)、 「is」を使用することをお勧めします。ただし、等しいかどうかをチェックする場合 (つまり、2 つのオブジェクトが同じ値を持つかどうかをチェックする場合)、 ==.

を使用する必要があります。

以上がPython なし 比較: 'is' または ==?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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