admin 管理员组文章数量: 1087709
Python浅拷贝和深拷贝以及内存分析
浅拷贝和深拷贝
深入了解参数传递的底层原理,需要理解一下“浅拷贝和深拷贝”,拷贝的内置函数为:copy(浅拷贝)、deepcopy(深拷贝)
浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用。
深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象
例子:
import copydef testcopy():'''测试浅拷贝'''a=[11,22,[33,44]]b=copy.copy(a)print("a",a)print("b",b)b.append(55)b[2].append(66)print('浅拷贝')print('a',a)print('b',b)
testcopy()
返回:
>>>a [11, 22, [33, 44]]
b [11, 22, [33, 44]]
浅拷贝
a [11, 22, [33, 44, 66]]
b [11, 22, [33, 44, 66], 55]
注:可以从结果看到,浅拷贝b修改子元素时,源对象也跟着修改了。根据图可以看到,浅拷贝只拷贝第一层引用地址,之后引用还是使用原引用地址没有发生改变。如图:
深拷贝示例:
def testdeepcopy():'''测试深拷贝'''a = [11, 22, [33, 44]]b = copy.deepcopy(a)print("a", a)print("b", b)b.append(55)b[2].append(66)print('深拷贝')print('a', a)print('b', b)testdeepcopy()
返回值:
>>>a [11, 22, [33, 44]]
b [11, 22, [33, 44]]
深拷贝
a [11, 22, [33, 44]]
b [11, 22, [33, 44, 66], 55]
注:根据所示可以看出,深拷贝是把有关对象指向全部拷贝一份。深拷贝b修改数据时,将不会修改a任何数据
本文标签: Python浅拷贝和深拷贝以及内存分析
版权声明:本文标题:Python浅拷贝和深拷贝以及内存分析 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1699081285a327001.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论