Watch Next:
Transcript
Variables in Python are not buckets that contain things, but pointers: variables point to objects.
Let's say we have a variable x
which points to a list of 3 numbers:
>>> x = [1, 2, 3]
If we assign y
to x
, this does something kind of interesting:
>>> y = x
>>> x == y
True
The variable x
is equal to the variable y
at this point, x
and y
also have the same id
, meaning they both point to the same memory location.
>>> id(x)
140043174674888
>>> id(y)
140043174674888
This means they both point to the same object. So if we mutate the object x
points to (by appending to that list) x
will now have 4
in it but so will y
!
>>> x.append(4)
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
The reason this happens is all about the line that we wrote above:
>>> y = x
Assignment statements never copy anything in Python. Assignments take a variable name and point them to an object.
When I say variables are pointers, I mean they're not buckets that contain things.
When you do an assignment, you're pointing the variable name on the left-hand side of the equals sign (y
in this case) to whatever object is referenced on the right-hand side of the equals sign (the list that x
already happens to point to in this case).
So variables in Python are pointers, not buckets that contain things.
from Planet Python
via read more
No comments:
Post a Comment