On Thu, 10 Nov 2005 06:47:41 +0000, Donn Cave wrote: > Quoth Steven D'Aprano <[EMAIL PROTECTED]>: > ... > | So when working with ints, strs or other immutable objects, you aren't > | modifying the objects in place, you are rebinding the name to another > | object: > | > | py> spam = "a tasty meat-like food" > | py> alias = spam # both names point to the same str object > | py> spam = "spam spam spam spam" # rebinds name to new str object > | py> print spam, alias > | 'spam spam spam spam' 'a tasty meat-like food' > > The semantics of assignment are like that, period. If the right hand > side is an int, a string, a class instance, a list, whatever, doesn't > matter at all. The question of mutability at this point can be a red > herring for someone who doesn't already understand these matters.
Yes, but in the context we were discussing, the original poster was specifically asking to do something that is only possible with mutable objects. He wanted to do something like this: data = [0, None, 2, ["hello"]] ref = data[-1] ref.append("world") and end up with [0, None, 2, ["hello", "world"]]. That will work, because the last item in data is mutable. But this will NOT work: data = [0, None, 2, 0] ref = data[-1] ref = 1 assert data[-1] == 1 because ints are immutable. So the distinction between modifying a mutable object in place and assigning is important. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list