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