数据类型3.4深浅拷贝

若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:深浅拷贝对于只有一层的数据无差别,对于有嵌套的数据会有差别。浅拷贝只复制第一层。

 

上一篇:C#操作Word生成目录


下一篇:java 中局部变量在栈内存中的复制