Memory management in Python involves a private heap memory location containing all Python objects and data structures.
Python's runtime only deals in references to objects (which all live in the heap): what goes on Python's stack are always references to values that live elsewhere.
>>> a = [1, 2]
>>> b = a
>>> a.append(3)
Here we can clearly see that the variable b
is bound to the same object as a
.
You can use the is
operator to tests if two objects are physically the same, that means if they have the same address in memory. This can also be tested also using the id()
function.
>>> a is b
>>> True
>>> id(a) == id(b)
>>> True
So, in this case, you must explicitly ask for a copy.
Once you've done that, there will be no more connection between the two distinct list objects.
>>> b = list(a)
>>> a is b
>>> False
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…