Variable Scope 2 -- Thanks for 1.

JCM joshway_without_spam at myway.com
Fri Jan 9 15:56:26 EST 2004


Jens Thiede <jensthiede at webgear.co.za> wrote:
> I found the querk in my code:

> a = [1, 2, 3];
> b = a;
> b.append(4);

> b == [1, 2, 3, 4]; # As it should.
> a == [1, 2, 3, 4]; # - Why?

> One would think that b is a referance to a - however I know it's not.

Rather, a and b hold references to the same object--the list created
by the expression [1, 2, 3].

> Without changing a thing from above, the following is true:

> b = [];
> b.append(5);
> a == [1, 2, 3, 4];
> b == [5];

> How do I avoid accedentaly modifying variables, is this a bug? If not
> why not?

Assignment rebinds variables to different objects, so b now holds a
reference to the list created by the expression [].



More information about the Python-list mailing list