浅述python中深浅拷贝原理


Posted in Python onSeptember 18, 2018

前言

在c++中参数传递有两种形式:值传递和引用传递。这两种方式的区别我不在此说,自行补上,如果你不知道的话。我先上python代码,看完我们总结一下,代码如下:

# copy module import
import copy

# number and string
a = 12
a1 = a
a2 = copy.copy(a)
a3 = copy.deepcopy(a)
# look addr
print("==========number=======")
print(id(a))
print(id(a1))
print(id(a2))
print(id(a3))

s = '12345'
s1 = s
s2 = copy.copy(s)
s3 = copy.deepcopy(s)
# look addr
print("==========String=======")
print(id(s))
print(id(s1))
print(id(s2))
print(id(s3))

# others
target = {
  'name': 'ckmike',
  'age': 25,
  'boxes':[
    'LV',
    'Prada',
    'KUQI'
  ]
}
target1 = target
target2 = copy.copy(target)
target3 = copy.deepcopy(target)
print("==========dict-1=======")
print(id(target))
print(id(target1))
print(id(target2))
print(id(target3))
print("==========dict-2=======")
print(id(target['boxes']))
print(id(target1['boxes']))
print(id(target2['boxes']))
print(id(target3['boxes']))

输出结果:

==========number=======
10943360
10943360
10943360
10943360
==========String=======
140567123944648
140567123944648
140567123944648
140567123944648
==========dict-1=======
140567124625088
140567124625088
140567124625160
140567123938760
==========dict-2=======
140567099339272
140567099339272
140567099339272
140567099339464

总结:

对于数值、字符串而言,不管是赋值符号还是浅拷贝、深拷贝,都是引用的内存中的同一份值,变量指向同一地址。
对于非数值非字符串而言,浅拷贝只会拷贝对象的第一层,深拷贝则会把所有层都进行拷贝。

Python 相关文章推荐
python 接口返回的json字符串实例
Mar 27 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
Django配置文件代码说明
Dec 04 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
Python二元算术运算常用方法解析
Sep 15 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 Python
Python 文字识别
May 11 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 #Python
python批量复制图片到另一个文件夹
Sep 17 #Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 #Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 #Python
使用 Python 实现简单的 switch/case 语句的方法
Sep 17 #Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 #Python
python实现简单http服务器功能
Sep 17 #Python
You might like
dedecms系统常用术语汇总
2007/04/03 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
基于php实现的验证码小程序
2016/12/13 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
大学信息公开实施方案
2014/03/09 职场文书
2014年项目工作总结
2014/11/24 职场文书
责任书格式
2015/01/29 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
python 常用的异步框架汇总整理
2021/06/18 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript