Pythonにおける「==」と「is」の違いについて


「==」は値の等価性を比較します。つまり、比較しているオブジェクトの値が同じであれば、Trueを返します。例えば、以下のコードを考えてみましょう。

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # True

この場合、リストabは中身が同じであるため、a == bはTrueとなります。

一方、「is」はオブジェクトの同一性を比較します。つまり、比較しているオブジェクトが同じインスタンスである場合にのみ、Trueを返します。以下の例を見てみましょう。

x = [1, 2, 3]
y = x
print(x is y)  # True

ここでは、リストxyは同じインスタンスを参照しているため、x is yはTrueとなります。

ただし、注意点として、一部の内部でキャッシュされる小さな整数や文字列などのイミュータブルなオブジェクトでは、「is」演算子を使用しても正しく比較できない場合があります。そのため、値の等価性を比較する場合は、「==」演算子を使用することを推奨します。

以上が、「==」と「is」の違いについての解説です。これにより、Pythonでオブジェクトを比較する際に適切な演算子を選択することができます。