On Mar 12, 2008, at 5:43 AM, Ian Mallett wrote:
Weird. I get: >>> 2 is 1+1 True
it's not too weird, it's just that 'is' is what you use to check if two references are to the same instance (object), and there's a pretty well known optimization in (c)Python that smallish numbers are kind of singletons so that they are not instanciated all the time
so use the == operator when interested in the values, and not whether the reference is the same.
'is' works well for "if x is None" because None is a singleton, i.e. all references to None point to the same object (that's why you better never do "None = 'x'" :p)
otherwise is useful for checking if a reference is exactly to the same object, e.g.:
a = SceneNode() b = SceneNode(parent=a) c = SceneNode(parent=a) assert b.parent is c.parent ~Toni
