python 直接赋值和copy的区别详解


Posted in Python onAugust 07, 2019

直接赋值和copy的区别:

  • 直接赋值:其实就是对象的引用(别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

例子:

dict1 = {'user':'runoob','num':[1,2,3]} 
dict2 = dict1       # 浅拷贝: 引用对象
dict3 = dict1.copy()  # 深拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用 
# 修改 data 数据
dict1['user']='root'
dict1['num'].remove(1) 
# 输出结果
print(dict1)
print(dict2)
print(dict3)

实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的,dict3 父对象进行了深拷贝,不会随dict1 修改而修改,子对象是浅拷贝所以随 dict1 的修改而修改。

{'user': 'root', 'num': [2, 3]}
{'user': 'root', 'num': [2, 3]}
{'user': 'runoob', 'num': [2, 3]}

例子:求打印的结果

def extend_list(val, list=[]):
  list.append(val)
  return list
list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a') 
print("list1 = %s" % list1)
print("list2 = %s" % list2)
print("list3 = %s" % list3)

输出结果:

list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python-基础-入门 简介
Aug 09 Python
Django日志模块logging的配置详解
Feb 14 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
深入浅析python with语句简介
Apr 11 Python
docker django无法访问redis容器的解决方法
Aug 21 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
Python读取YAML文件过程详解
Dec 30 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
python常用运维脚本实例小结
Feb 14 Python
Python序列化pickle模块使用详解
Mar 05 Python
django model通过字典更新数据实例
Apr 01 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 #Python
python的常见矩阵运算(小结)
Aug 07 #Python
python字典的setdefault的巧妙用法
Aug 07 #Python
解决Django中调用keras的模型出现的问题
Aug 07 #Python
python 字典 setdefault()和get()方法比较详解
Aug 07 #Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 #Python
如何用Python来搭建一个简单的推荐系统
Aug 07 #Python
You might like
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
php时区转换转换函数
2014/01/07 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python实现按中文排序的方法示例
2018/04/25 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Python 如何测试文件是否存在
2020/07/31 Python
旷课检讨书3000字
2014/02/04 职场文书
个人安全生产承诺书
2014/05/22 职场文书
员工辞职信范文
2015/03/02 职场文书
文艺演出主持词
2015/07/01 职场文书
公司员工管理制度
2015/08/04 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL