私はこれが重複しているとは思わないが、is
対==
のの具体的なケースのタイプを比較するが、私に教えてください。型/クラスを比較するとき、 '=='演算子の代わりに 'is'演算子を使用するのは安全ですか?
私は、is
演算子が実際にはid(type(a))==id(<type>)
に変換されていることを知っています。しかし、これまでのところ、私はtype(a) is <type>
が予測可能な結果を出すように見えた。私の質問は、is
演算子を使用すると、予期しない結果が(つまり、'foo' is str
が返され、False
になる)という結果になりますか?または、Pythonはtype
クラスを予測可能な場所に格納するので、is
は常に==
と同じ結果になりますか?この文脈では、is
がやや読みやすくなっています。
このケースは、私がである場合、継承されたクラス/サブクラス(その場合はisinstance
が適しています)を扱っていない場合です。
'id'の比較として' is'を考えないでください。 'a is b 'は' a'と 'b'が同じオブジェクトであれば' True'と評価されます。それがあなたが探しているものなら、それを使ってください。 – user2357112
特に、メモリの場所は完全に無関係です。 CPython以外のPython実装では、式の途中で変更されることもあります(ただし、 'id'値はそうではありません)。 – user2357112
@ user2357112申し訳ありませんが、私は複数のstackoverflowスレッドでその説明を聞いたことがあります。私は限られた状況でしかないと思うが、それらの操作は同等である。 –