Clarification on Immutability please
Stephen Tucker
stephen_tucker at sil.org
Tue Jan 21 12:40:56 EST 2020
Hi Python-list folk,
I am sure this has been answered many times before, but I need to ask it
again.
Given that the following is valid Python 2.7.10 (when keyboarded into Idle):
mytup = ("q", "w", "e")
id(mytup)
mytup = mytup [:2]
id(mytup)
and even that the first id(mytup) returns the same address as the second
one, I am left wondering exactly what immutability is.
I am left concluding that mytup is not actually a tuple (even though type
(mytup) tells me that it is).
My only explanation is that mytup is, actually, a pointer to a tuple; the
pointer can't change, but the contents of that pointer (or the data to
which the pointer points) can change.
That said, if I then type
mytup = mytup + ("r", "t")
id(mytup)
I find that this third id call returns a different address from the one
returned by the first two.
Somehow, it seems, tuples can be reduced in length (from the far end)
(which is not what I was expecting), but they cannot be extended (which I
can understand).
I am probably confused, ignorant, stupid, or any combination of the above.
Can you please help me become less so?
Many thanks.
Stephen Tucker.
More information about the Python-list
mailing list