基本
python中的等于号即为浅拷贝 这样的话他们的地址是相同的 如下个例子可以看出当a中的数据被修改时b的值也会发生改变
[root@localhost day1]# python3
Python 3.6.0 (default, Dec 27 2018, 17:19:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a=[1,2,3]
>>> b=a
>>> id(a)
139672433624840
>>> id(b)
139672433624840
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]
>>>
python中的深拷贝 可以通过copy中的deepcopy完成 即将一个变量所指向的内存中的东西完全拷贝到另一个地址空间之中
>>> import copy
>>> c=copy.deepcopy(a)
>>> id(a)
139672433643592
>>> id(c)
139672306328968
>>>
copy.copy() 与copy.deepcopy()的区别
递归拷贝 在其deepcopy时 会将列表中的元素也进行深拷贝
>>> a=[1,2,3]
>>> b=[3,4,5]
>>> c=[a,b]
>>> c
[[1, 2, 3], [3, 4, 5]]
>>> d=copy.deepcopy(c)
>>> id(c[0])
139672306327624
>>> id(d[0])
139672306328968
>>>
copy.copy()在拷贝时 在copy元组时 可遍历的数据类型copy深拷贝第一层 其余浅拷贝(如列表) 如果为不可遍历型都为为浅copy (如元组)
>>> e=copy.copy(c) #深拷贝第一层 第二层为浅拷贝
>>> id(c[0])
139672306327624
>>> id(e[0])
139672306327624
>>> id(d[0])
139672306328968
>>> a=(1,2,3) #浅拷贝
>>> b=copy.copy(a)
>>> id(a)
139672303808656
>>> id(b)
139672303808656
>>>