On Fri, 05 Feb 2010 09:53:33 -0600, David Thole wrote:

> I read this....and am a tiny bit confused about the actual problem.
> 
> It's not exactly complex to realize that something like: a = b = array
> that a and b both point to the array.
> 
> Logically speaking, I'm not sure how one could assume that the same
> assignment would yield a and b point to the same duplicate array.

It's an easy mistake to make, if you don't understand Python's object 
model:


>>> a = b = 2
>>> a += 1
>>> a, b
(3, 2)
>>> a = b = [2]
>>> a[0] += 1
>>> a, b
([3], [3])

For the non-Python coders reading, the difference is that ints are 
immutable, and hence a += 1 assigns a to a new int, leaving b untouched, 
but lists are mutable, hence a[0] += 1 mutates the list which both a and 
b refer to. This is a Good Thing, but it is one of the things which give 
newcomers some trouble.


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to