The differences in cases 1 and 3 vs. 2 is due to 'common values' of name assignments being treated a bit differently, right? Also, it's clear why case 5 evaluates to false. But, why does the case 4 equality check evaluate to True, whereas case 1 and 3 don't?
case 1: >>> a = 10000 >>> b = 10000 >>> a is b False case 2: >>> a = 10 >>> b = 10 >>> a is b True case 3: >>> def foo2(v): ... return v ... >>> A1 = foo2(10000) >>> B1 = foo2(10000) >>> A1 is B1 False case 4: >>> def foo(): ... x = 10000 ... return x ... >>> A = foo() >>> B = foo() >>> A is B True case 5: >>> C1 = foo2(10000) >>> D1 = foo2(10001) >>> C1 is D1 False Thanks! _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor