On Thu, 21 Apr 2011 02:55:52 -0700, vino19 wrote: > Sure, I understand that "is" is not "==", cause "is" just compares > id(a)==id(b). > > I have a win32 CPython and the range of "singletons" is from -5 to 256 > on my machine. > > I am asking about what happens in Python interpreter? Why is there a > difference between running one line like "a=1;b=1" and two lines like > "a=1 \n b=1"? Does it decide to locate memory in different types depend > on a code?
It's an implementation detail which is free to change from one version to the next. You can't rely on that behaviour, it could change at any time. You would have to study the source code of the exact version you are running, including any IDE if you are using an IDE, and see what it is doing. The point is that Python is free to re-use immutable objects, or not re- use them, as it sees fit. >>> sys.version '2.6.4 (r264:75706, Feb 1 2010, 13:33:07) \n[GCC 4.1.2 20070925 (Red Hat 4.1.2-27)]' >>> >>> >>> a = 1.23; b = 1.23; a is b True >>> c = 1.23 >>> c is a False but: >>> a = 1001; b = 10001; a is b False -- Steven -- http://mail.python.org/mailman/listinfo/python-list