当前位置:网站首页>浅拷贝、深拷贝区别
浅拷贝、深拷贝区别
2022-07-28 05:20:00 【可宇龙】
深浅拷贝的区别:
1、浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())
2、深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝。
简单的理解就是:就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝。 如果拷贝的对象里的元素只有值,没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不会影响原有对象,新对象和原对象完全分离开。
————————————————
代码实现
import copy
a = [1,2,3,4,5,['a','b','c']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[5].append('d')
print('b',b) # [1,2,3,4,5,['a','b','c','d'],5]
print('c',c) # [1,2,3,4,5,['a','b','c','d']]
print('d',d)# [1,2,3,4,5,['a','b','c']]

边栏推荐
猜你喜欢
随机推荐
Annotation and grid addition of ArcGIS map making
js-宏任务和微任务
uni-app-双击事件模拟
ES6 --- deconstruction assignment
Model builder of ArcGIS
书籍-邓普顿教你逆向
ES6----解构赋值
结果填空 第39级台阶(递归*C语言)
Books - the art of lucid thinking
js-简单的发布订阅类
MYSQL之搭建数据库系列(一)——下载MYSQL
Books - mental models
反弹shell的N种姿势
es6新增--->对象(Object)
Canvas绘图2
(php毕业设计)基于php水果销售商店管理系统获取
uniapp-监听app是否有网络连接
Apache Log4j任意代码执行复现
Review of metallurgical physical chemistry --- electrodeposition and reduction process of metals
设置滚动条









