浅拷贝与深拷贝
>>> a = {1:'one',2:'two',3:'three'}
>>> b = a.copy() #浅拷贝
>>> c = a #赋值拷贝
>>> a
{1: 'one', 2: 'two', 3: 'three'}
>>> b
{1: 'one', 2: 'two', 3: 'three'}
>>> id(a) #地址空间
2239148586072
>>> id(b)
2239148572248
>>> id(c)
2239148586072
浅拷贝
只是对对象表层的一个拷贝,并不受原数据的改动而变化,拥有不同的地址空间。
赋值拷贝(深拷贝)
具有相同的地址空间,会受拷贝函数的变化而变化。
>>> c[4] = 'four'
>>> c
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> a
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> b
{1: 'one', 2: 'two', 3: 'three'}
说明:
给c[4]赋值,并没有影响到b,由于a、c的地址空间相同,所以当c中数据变动时,只有a数组受影响、b数组无影响。