Python: == と is の違い

python の == と is を使い間違えると厄介なことになる。

次のようにpythonシェルで実行すると == と is の結果は同じになる

>>> abc = "abc"
>>> print abc is "abc"
True
>>> print abc == "abc"
True
>>>

しかし、次の場合は違う結果になる
>>> abc = "abc"
>>> xyz = "xyz"
>>> print abc+xyz == "abcxyz"
True
>>> print abc+xyz is "abcxyz"
False
>>>

これは is はオブジェクトIDを比較し、== はオブジェクトに保存されている値を比較しているためである。

id 関数を使ってオブジェクトIDを表示してみるとわかりやすい。

>>> print abc+xyz
abcxyz
>>> print id(abc+xyz)
4292577472
>>> print id("abcxyz")
4292577536
>>>

つまり

  • 値は同じだがオブジェクトIDは異なる
  • 値は == だが、オブジェクトIDは is ではない。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

なるほど(納得、参考になった、ヘー)

この記事へのコメント

この記事へのトラックバック