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中os和shutil模块实用方法集锦
May 13 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
python关闭windows进程的方法
Apr 18 Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 Python
dataframe设置两个条件取值的实例
Apr 12 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
对django中foreignkey的简单使用详解
Jul 28 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
python 装饰器功能与用法案例详解
Mar 06 Python
python中的测试框架
Nov 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
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
vant实现购物车功能
2020/06/29 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
Python Django view 两种return的实现方式
2020/03/16 Python
浅析python函数式编程
2020/09/26 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
小学生暑假感言
2014/02/06 职场文书
求职意向书
2014/07/29 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
详解Vue的options
2021/05/15 Vue.js
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python