ホームページ > バックエンド開発 > Python チュートリアル > Python で何も比較するのに「is」または「==」は正しい方法ですか?

Python で何も比較するのに「is」または「==」は正しい方法ですか?

Barbara Streisand
リリース: 2024-11-29 04:16:10
オリジナル
722 人が閲覧しました

Is

Python の Null 比較: 優先オプションは「is」または「==」ですか?

Python で値を比較する場合、次の 2 つがあります。使用できる演算子は「==」と「is」です。どちらも等しいかどうかをチェックするために使用できますが、特別な値 None を扱うときは異なる動作をするため、混乱が生じたり、エディターの警告が表示される可能性があります。

Null 比較の「==」と「is」について

「==」演算子は、2 つのオブジェクトの値を比較して等しいかどうかをテストします。一方、「is」は同一性を検査し、2 つのオブジェクトがメモリ内の同じオブジェクトであるかどうかをチェックします。

None と比較した場合の警告を回避する

ほとんどのコード エディターは次のことを行います。 「==」を使用して変数を None と比較すると、警告が発行されます。これは、一般に、None 値をチェックするときに「is」を使用する方が良いと考えられているためです。

Null 比較に「is」が優先される理由

"is"いくつかの理由で、

  • の方がより明確です: "is"オブジェクトのアイデンティティをチェックしていることを明確に示し、曖昧さを減らします。
  • より効率的です: None をチェックする場合、「is」は「==」よりも高速な操作です。
  • より信頼性が高くなります: カスタム クラスは「==」演算子をオーバーライドでき、値が実際には None でなくても True を返す可能性があります。 "is" は、オブジェクトのアイデンティティを直接チェックすることでこの問題を回避します。

例: 違いを説明する

次のカスタム クラスを考えてみましょう:

class Negator:
    def __eq__(self, other):
        return not other
ログイン後にコピー

このクラスからオブジェクトをインスタンス化し、それを比較するとなし:

thing = Negator()
print(thing == None)  # True
print(thing is None)  # False
ログイン後にコピー

クラスが等価演算子をオーバーライドするため、「==」が True を返すことがわかります。ただし、オブジェクトは None と同じではないため、「is」は正しく False を返します。

結論

Python で値を None と比較する場合、通常、「is」は次のようになります。優先される演算子。 「==」よりも明示的、効率的、信頼性が高くなります。これらの演算子の違いを理解することで、潜在的なエディターの警告を回避しながら、より正確で効率的なコードを作成できます。

以上がPython で何も比較するのに「is」または「==」は正しい方法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート