若a = dict(),令 b = a,执行b.update({"x":1}),a亦改变,为何,如何避免
dict_a = dict()
dict_b = dict_a #直接赋值
dict_b.update ({"name":"lisi"})
print(dict_a,dict_b)
print(id(dict_a),id(dict_b))
输出结果:
{'name': 'lisi'} {'name': 'lisi'}
4074228 4074228
Process finished with exit code 0
一摸一样,数据和地址都跟着一起改变
解决方法:使用拷贝
a = {"name":"zhangsan","age":18,}
b = copy.deepcopy(a)
b["name"] = "lisi"
print(a,b)
print(id(a),id(b))
输出结果:
{'name': 'zhangsan', 'age': 18} {'name': 'lisi', 'age': 18}
4074108 43224196
Process finished with exit code 0
PS:深浅拷贝对于只有一层的数据无差别,对于有嵌套的数据会有差别。浅拷贝只复制第一层。
来源:https://www.cnblogs.com/hrv5/p/12006006.html