if var1
equals 1
, and you run var2 = var1
, that sets var2
to 1
.
if list1
equals [
, and you run ]list2 = list1
, that sets list2
to list1
so if you then run var1 = 2
, var2
will still be 1
but if you run list1 = [3, 2, 1]
, list2
will give [
]
Everything’s an object. A variable is a pointer to an object. var1 is a pointer to the object 1 (which is an integer). var2 is also a pointer to the same object. If you point var1 to a different object (the integer 2), that doesn’t change var2. list1 is a pointer to the list object you defined. list2 is a pointer to the same object. If you change the object, both pointers still point to it.
At least that’s my understanding of the whole business. If I got anything wrong, in sure somebody will point it out.