Hatena::Grouppython

nelnal@python

2008-01-22

[] 等価と同一 23:54  等価と同一 - nelnal@python を含むブックマーク はてなブックマーク -  等価と同一 - nelnal@python

Pythonでは「等価」と「同一」は異なる意味となる。

等価
2つのオブジェクトを構成する要素*1が各々同じである。
同一
2つのオブジェクトはメモリ上の同じアドレスに存在するデータを参照している。

「等価」は「==」演算子を、「同一」は「is」演算子を使います。

>>>s1 = "spam"
>>> s2 = s1
>>> s1 == s2, s1 is s2
(True, True)

>>> s1 = "This is a pen."
>>> s2 = "This is a pen."
>>> s1 == s2, s1 is s2
(True, False)

ただし、文字列ではデータ長が短い場合に限り、

同一メモリアドレスのデータを参照する場合がある。

*1:ネストされているものも含む

トラックバック - http://python.g.hatena.ne.jp/nelnal_programing/20080122