第8章的内容具体有哪些疑问?
- 内容介绍
- 文章标签
- 相关推荐
本文共计946个文字,预计阅读时间需要4分钟。
浅拷贝与深拷贝的区别主要在于拷贝对象时是否递归复制其内部对象。
浅拷贝:- 仅复制对象的引用,不复制对象内部的引用指向的对象。- 修改内部对象会影响原对象。
深拷贝:- 递归复制对象及其所有内部对象,生成一个全新的对象。- 修改内部对象不会影响原对象。
浅拷贝 VS 深拷贝
# In[] # list 生成一个新的引用对象,只是用alst完成初始化 alst = [1,2,3,4,5] blst=list(alst) alst.append(6) print(blst) # In[] alst = [1,2,3,4,5] blst=alst # 浅拷贝,两者同时变化 alst.append(6) print(blst) # In[] from copy import copy alst = [1,2,3,4,5] blst=alst.copy() # 浅拷贝,两者同时变化 alst.append(6) print(blst) # In[] import copy alst = [1,2,3,4,5] blst=copy.deepcopy(alst) # 深拷贝,可以认为是用alst初始化一个新的对象 alst.append(6) print(blst)
此处,对可变类型而言,深拷贝其实就是创建了一个新的引用对象,可以认为原来的只是用来做初始化用的。新旧有变化对彼此都没有影响了。浅拷贝可以认为就是起了个别名。
本文共计946个文字,预计阅读时间需要4分钟。
浅拷贝与深拷贝的区别主要在于拷贝对象时是否递归复制其内部对象。
浅拷贝:- 仅复制对象的引用,不复制对象内部的引用指向的对象。- 修改内部对象会影响原对象。
深拷贝:- 递归复制对象及其所有内部对象,生成一个全新的对象。- 修改内部对象不会影响原对象。
浅拷贝 VS 深拷贝
# In[] # list 生成一个新的引用对象,只是用alst完成初始化 alst = [1,2,3,4,5] blst=list(alst) alst.append(6) print(blst) # In[] alst = [1,2,3,4,5] blst=alst # 浅拷贝,两者同时变化 alst.append(6) print(blst) # In[] from copy import copy alst = [1,2,3,4,5] blst=alst.copy() # 浅拷贝,两者同时变化 alst.append(6) print(blst) # In[] import copy alst = [1,2,3,4,5] blst=copy.deepcopy(alst) # 深拷贝,可以认为是用alst初始化一个新的对象 alst.append(6) print(blst)
此处,对可变类型而言,深拷贝其实就是创建了一个新的引用对象,可以认为原来的只是用来做初始化用的。新旧有变化对彼此都没有影响了。浅拷贝可以认为就是起了个别名。

