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中的进程、线程、协程
Mar 18 Python
Python实现带百分比的进度条
Jun 28 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
django queryset相加和筛选教程
May 18 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
Python常用数字处理基本操作汇总
Sep 10 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
PHP中strtotime函数使用方法分享
2012/01/10 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
jquery 延迟执行实例介绍
2013/08/20 Javascript
JsRender实用入门教程
2014/10/31 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
原生js开发的日历插件
2017/02/04 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python爬取读者并制作成PDF
2015/03/10 Python
python基本语法练习实例
2017/09/19 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
为什么会有内存对齐
2016/10/10 面试题
一名老师的自我评价
2014/02/07 职场文书
家具促销活动方案
2014/02/16 职场文书
社保委托书怎么写
2014/08/02 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
病危通知书样本
2015/04/17 职场文书
三八节活动简报
2015/07/20 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python