Python なしの比較: "is" または == を使用する必要がありますか?
Python では、変数を比較するときに警告が表示される場合があります。 == を使用する場合は何もありませんが、is を使用する場合は警告は発行されません。どちらの構文も有効ですが、一般的には my_var is None の使用が推奨されます。
None チェックでは "is" が推奨されるのはなぜですか?
is と の主な違い== はその目的にあります。 == は等価性をチェックし、 is はオブジェクトの同一性をチェックします。変数を None と比較する場合、変数が単にそれに等しいオブジェクトではなく、明確に None オブジェクトであるかどうかを判断したいとします。
None は Python では一意のオブジェクトであり、その一例。 my_var is None を使用すると、my_var と None が同じオブジェクトかどうかを確認することになります。このチェックは、my_var == None を使用するよりも具体的で信頼性が高くなります。
等価性と同一性
違いを説明するために、カスタム クラス Negator を考えてみましょう。
class Negator(object): def __eq__(self, other): return not other
Negator のインスタンスを作成し、None と比較すると、 get:
thing = Negator() print(thing == None) # True print(thing is None) # False
thing == None は True を返します。これは、Negator クラスが eq メソッドをオーバーライドして、それ自体を除く他の値と比較したときに常に True を返すためです。ただし、2 つのオブジェクトが同じオブジェクトではないため、None は False を返します。
結論
None チェックの場合、通常、my_var is None を使用して、特に None オブジェクトをチェックしていることを確認してください。 == は等しいかどうかを確認する場合に使用できますが、比較メソッドをオーバーライドするカスタム クラスを扱う場合は信頼性が低い可能性があることに注意してください。
以上がPython なしの比較: 「is」または「==」を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。