"Ben C" wrote: > I used to think it assigned with things like integers, because if you > write: > > a = 5 > b = a > b += 1 > print a > > a is still 5. So it looked like a and b stored values and b got a "copy" > of a's value. But this is the wrong interpretation, > > b += 1 > > is really b = b + 1, and rebinds b.
almost: "b += obj" is really "b = b.__iadd__(obj)" with "b = b + obj" as a fallback if __iadd__ isn't supported by "b". > If it weren't for the id() function I think the difference between > "variable stores value", "variable stores immutable reference" and > "variable stores copy-on-write reference" would be implementation > detail and never visible to the programmer. except when they are: >>> a = [1, 2, 3] >>> b = a >>> b += [4] >>> a [1, 2, 3, 4] >>> b [1, 2, 3, 4] </F> -- http://mail.python.org/mailman/listinfo/python-list