python 中赋值,深拷贝,浅拷贝的区别
作者:karsa__ 时间:2022-11-15 09:35:44
赋值:其实就是对象的引用(相当于取别名)。
浅拷贝(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两者是完全独立的。
来源:https://blog.csdn.net/karsa__/article/details/123506526
标签:python,赋值,深拷贝,浅拷贝


猜你喜欢
python实现感知器算法详解
2022-04-29 15:08:43

5分钟快速掌握Python定时任务框架的实现
2023-05-31 10:19:45

MySQL 句柄数占用过多的解决方法
2024-01-29 12:31:06
卸载tensorflow-cpu重装tensorflow-gpu操作
2022-07-31 12:46:13

使用php操作xml教程
2023-06-14 03:10:45

网页设计详细教程之XML简便省力技巧五则
2008-05-23 14:37:00
scrapy-redis分布式爬虫的搭建过程(理论篇)
2022-04-25 20:49:25

python模块之paramiko实例代码
2022-08-08 08:34:51
js 数据存储和DOM编程
2024-02-24 07:52:31
Windows环境下vscode-go安装笔记(不支持32位)
2024-04-25 15:01:40

一文搞懂MySQL元数据锁(MDL)
2024-01-14 18:29:08

python远程登录代码
2022-09-12 15:48:15
python自动化测试通过日志3分钟定位bug
2021-09-12 10:11:19

Pytorch中torch.flatten()和torch.nn.Flatten()实例详解
2021-09-15 06:39:43
python pyqtgraph 保存图片到本地的实例
2023-05-08 01:15:11

解决vue3打包过后空白页面的情况
2024-05-09 10:43:00

SQL2000个人版 应用程序正常初始化失败0乘以C0000135失败
2024-01-27 05:09:39
Django REST Framework之频率限制的使用
2021-01-25 17:59:42

详解Golang 与python中的字符串反转
2021-08-01 23:31:08
ASP.NET中使用SQL存储过程的方法
2007-08-24 09:31:00