is 演算子は同一性、== 演算子は等価性

「初めてのPython」で読んだような気がするのだけど、すっかり忘れてしまっていたので。ちょっと検証してみます。

>>> class Foo(object):
...     def __init__(self, x):
...         self.x = x
...     def __eq__(self, arg):
...         return self.x == arg
...
>>>
>>> f = Foo(1)
>>> g = Foo(1)
>>> h = Foo(2)
>>> f is g
False
>>> g is h
False
>>> h is f
False
>>> f == g
True
>>> f == h
False
>>> h == f
False

ふむ、確かに。

初めてのPython 第3版

初めてのPython 第3版