python 中赋值,深拷贝,浅拷贝的区别
更新时间:2022年03月16日 08:46:51 作者:karsa__
这篇文章主要介绍了python 中赋值,深拷贝,浅拷贝的区别,下文利用实例对三者进行详细的解析,具有一的的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
- 赋值:其实就是对象的引用(相当于取别名)。
- 浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象,会引用子对象。
- 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
一、赋值实例
# a这个大列表是一个父对象,里面的小列表是a的一个子对象 a = [1, 2, 3, ["a", "b"]] # 赋值实例 b = a print("a:", a) print("b:", b) ## 打印结果 a: [1, 2, 3, ['a', 'b']] b: [1, 2, 3, ['a', 'b']]
解析:
b = a: 赋值引用,a 和 b 都指向同一个对象,所以得到的结果都一样
二、浅拷贝实例
# 浅拷贝实例 a = [1, 2, 3, ["a", "b"]] c = a.copy() # 第一次打印 print("a:", a) print("c:", c) # 给a对象中的子对象添加元素 a[3].append("c") print("a:", a) print("c:", c) # 给a这个父对象添加元素 a.append(4) print("a:", a) print("c:", c) ## 打印结果 a: [1, 2, 3, ['a', 'b']] c: [1, 2, 3, ['a', 'b']] a: [1, 2, 3, ['a', 'b', 'c']] c: [1, 2, 3, ['a', 'b', 'c']] a: [1, 2, 3, ['a', 'b', 'c'], 4] c: [1, 2, 3, ['a', 'b', 'c']]
解析:
c = a.copy(): 浅拷贝, a 和 c 是一个独立的对象,但他们的子对象还是指向统一对象(是引用子对象)。
三、深拷贝实例
# 深拷贝实例 import copy a = [1, 2, 3, ["a", "b"]] d = copy.deepcopy(a) # 第一次打印 print("a:", a) print("d:", d) # 给a对象中的子对象添加元素 a[3].append("c") print("a:", a) print("d:", d) # 给a这个父对象添加元素 a.append(4) print("a:", a) print("d:", d) ## 打印结果 a: [1, 2, 3, ['a', 'b']] d: [1, 2, 3, ['a', 'b']] a: [1, 2, 3, ['a', 'b', 'c']] d: [1, 2, 3, ['a', 'b']] a: [1, 2, 3, ['a', 'b', 'c'], 4] d: [1, 2, 3, ['a', 'b']]
解析:
d = copy.deepcopy(a): 深度拷贝, d 完全拷贝了a这个父对象及其子对象,a与d两者是完全独立的。
到此这篇关于python 中赋值,深拷贝,浅拷贝的区别的文章就介绍到这了,更多相关python赋值,深拷贝,浅拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用pandas实现csv/excel sheet互相转换的方法
今天小编就为大家分享一篇使用pandas实现csv/excel sheet互相转换的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-12-12Github Copilot的申请以及在Pycharm的配置与使用详解
GitHub在联合OpenAI推出了一款"GitHub Copilot"工具,可以根据上下文自动写代码,下面这篇文章主要给大家介绍了关于Github Copilot的申请以及在Pycharm的配置与使用的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下2022-04-04
最新评论