首先我们先看一个例子:
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
我们将便两个赋给spam,然后拷贝spam的值赋值给变量cheese
,当我们改变spam时,并不会改变cheese,因为它们是两个不同的变量。
>>> spam =[1,2,3,4]
>>> cheese = spam
>>> cheese[1] = 'hello'
>>> spam
[1, 'hello', 3, 4]
>>> cheese
[1, 'hello', 3, 4]
列表和上面的例子完全不同。
当你将一个列表赋给一个变量时,实际上是将列表的引用赋给了该变量。
当我们创建列表时,将列表的引用赋给了spam,然后spam中的列表的引用拷贝到cheese,它们俩现在指向同一个列表。
“=”始终代表着拷贝,只是拷贝的对象不同。