python 中赋值,深拷贝,浅拷贝的区别
作者:karsa__ 发布时间:2022-11-15 09:35:44
标签: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两者是完全独立的。
来源:https://blog.csdn.net/karsa__/article/details/123506526


猜你喜欢
- MinTTY 是一个小巧但却很实用的 Cygwin 终端机,但有个严重的问题就是无法调用交互性的 Windows 原生程序,比如说 mysq
- 配置文件是每个项目最基础的部分,也是不可或缺的部分,比如:数据库连接、中间件属性等常见的配置。提前准备appsettings.json 文件
- 具体代码如下所示:import requestsimport jsonfrom pyecharts.charts import Map, G
- 如下所示:# 计算面积函数def area(width, height): return width * heightdef print_w
- Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就
- 结合mysql数据库查询,实现分页效果@user.route("/user_list",methods=['PO
- 虽然这种情况不应该发生,通常像我们关系型数据库,我们应该是事先设计好,以后不能改动,但是由于之前工作的疏忽,其实说实话,也不仅仅是我个人的疏
- 目录1. 前言2. Echarts3. Pyecharts3-1 安装依赖3-2 拷贝 
- mat数据格式是Matlab默认保存的数据格式。在Python中,我们可以使用h5py库来读取mat文件。>>> impo
- 问题来源jupyter notebook在命令行中启动之后,默认根目录为命令行的当前目录,这样便利性较差。下面给出了三种指定启动目录的方法,
- 本文实例讲述了Python正则替换字符串函数re.sub用法。分享给大家供大家参考,具体如下:python re.sub属于python正则
- MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(
- 上一篇中的方法在 webpack 更新后,uglify 缓存地址也发生了变化,需要重新找地址。后来测试发现不论是 uglify-js2 ug
- 首先来聊聊Vue框架,Vue是一套用于构建用户界面的渐进式的JavaScript框架,对于初学者来说是非常友好的 , Vue的虚拟Dom ,
- 1、下载安装MySQLdb类库http://www.djangoproject.com/r/python-mysql/2、修改setting
- 由于要学习搭建服务器和数据库,所以最近开始自学sql语言了,至于写数据库就用比较基础的Mysql数据库了,虽然Mysql已经被互联网公司所淘
- 打开php.ini,首先找到;;;;;;;;;;;;;;;;; file uploads ;;;;;;;;;;;;;;;;;区域,有影响文件
- 关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好
- 这是群里一朋友问的问题,当时我说判断下 day 是否相邻即可,后来细想,发现完全不对。问题需求给定5个相同格式的日期,怎么判断是否是连续5天
- 如下所示:filename=None if request.method == 'POST