On Sat, 23 Mar 2013 19:37:35 -0500, Fabian von Romberg wrote: > I have a single questions regarding id() built-in function. > > example 1: > > var1 = "some string" > var2 = "some string" > > if use the id() function on both, it returns exactly the same address.
I'm assuming that you used something other than "some string" for your tests (e.g. something without a space). Python *may* intern strings. The CPython implementation *does* intern strings which are valid identifiers (a sequence of letters, digits and underscores not starting with a digit), in order to optimise attribute lookups. FWIW, it also does this for integers between -5 <= n <= 256: > var1 = 256 > var2 = 255 + 1 > id(var1) 21499520 > id(var2) 21499520 > var3 = var1 + 1 > var4 = 257 > id(var3) 21541752 > id(var4) 21541584 In this case, it just saves on memory. More generally, an implementation *may* intern any immutable value, although it's not guaranteed to do so for anything except (IIRC) False, True and None. -- http://mail.python.org/mailman/listinfo/python-list