深拷贝
深拷贝,将值赋给另外一个变量,这个变量单独拥有这个。
字典类型的深拷贝
import copya = {"name":"xiaoming"}b = copy.deepcopy(a)print(a,b, a==b)a['name'] = "王大锤"print(a,b) # {'name': '王大锤'} {'name': 'xiaoming'}
a 的值更改完成之后, b的值还是原来的值。
列表类型数据的深拷贝
import copya = [1,2,3,4]b = copy.deepcopy(a)print(a,b, a==b)a[1] = "helloworld"print(a,b) # [1, 'helloworld', 3, 4] [1, 2, 3, 4]
浅拷贝
两个变量指向的还是同一个关联对象,a的值更改,也会影响b的值;
a = {"name":["a","b"]}b = a.copy()print(a,b, a==b)# 更改list中的值a['name'].append('c')# a, b 的值都会收到影响print(a,b) # {'name': ['a', 'b', 'c']} {'name': ['a', 'b', 'c']}
而在 深度copy中
import copya = {"name":["a","b"]}#b = a.copy()b = copy.deepcopy(a)print(a,b, a==b)# 更改list中的值a['name'].append('c')# 但是b的值不会收到影响print(a,b) # {'name': ['a', 'b', 'c']} {'name': ['a', 'b']}
使用场景
如果在自动化项目中需要进行传参,传参的结果放入到 字典的列表中,如果这个值需要copy一份,建议使用 深度copy, 两个变量单独维护,不会相互影响结果。
