【python】copy浅拷贝和deepcopy深拷贝
赋值: 其实就是对象的引用(别名),b = a: 赋值引用,a 和 b 都指向同一个对象。
浅拷贝(copy.copy): 只拷贝父对象,不会拷贝对象的内部的子对象。
b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
深拷贝(copy.deepcopy) 深拷贝 拷贝对象及其子对象
一个很好的例子:b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
注意事项:这里面说的拷贝是指只要拷贝了就保持两个对象的独立了
"""赋值示例"""
a = {"a": [1,2,3],"b":"test"}
b=a
a["a"][0]=2
a["b"]="paulwinflo"
print(a)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
print(b)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'} """浅拷贝示例"""
a = {"a": [1,2,3],"b":"test"}
b=a.copy()
a["a"][0]=2
a["b"]="paulwinflo"
print(a)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
print(b)
#>>>{'a': [2, 2, 3], 'b': 'test'} #因为浅拷贝是对父对象的拷贝,也就是新的父对象保持独立,不受老的父对象影响 """深拷贝示例"""
import copy
a = {"a": [1,2,3],"b":"test"}
b=copy.deepcopy(a)
a["a"][0]=2
a["b"]="paulwinflo"
print(a)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
print(b)
#>>>{'a': [1, 2, 3], 'b': 'test'} #因为深拷贝是对父对象和子对象的拷贝,也就是新的父对象和子对象都会保持独立,不受老的影响
【python】copy浅拷贝和deepcopy深拷贝的更多相关文章
- Python copy and deepcopy
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...
- python的浅拷贝和深拷贝
python对象有两种拷贝的形式:浅拷贝和深拷贝. 在<python核心编程>中看到对这两种拷贝的分析,觉得十分收益,所以记录在此. id()方法:id()方法可以查看某个对象的ID,类似 ...
- Python copy对象(copy与deepcopy)
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...
- python:浅拷贝与深拷贝
1,“相等”与“相同” 我们先赋值三个变量a, b, c: a = [1, 2, [1, 2]] b = [1, 2, [1, 2]] c = a 判断一下‘相等’: a == b 返回 True ...
- Python的浅拷贝与深拷贝
定义: =号浅拷贝:在Python中对象的赋值其实就是对象的引用.copy了之后两个仍然是同一个东西.那么他们内部的元素自然也是一样的,对其中一个进行修改,另一个也会跟着变> copy()浅拷贝 ...
- 深度解析:python之浅拷贝与深拷贝
深度解析python之浅拷贝与深拷贝 本文包括知识点: 1.copy与deepcopy 2.可变类型与不可变类型 1.copy与deepcopy 在日常python编码过程中,经常会遇见变量的赋值.这 ...
- Python 拓展之详解深拷贝和浅拷贝
正式开始 首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要 ...
- Python中的赋值、深拷贝与浅拷贝(内存地址)
Python中的赋值.深拷贝与浅拷贝(内存地址) 1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print ...
- Python 列表浅拷贝与深拷贝
浅拷贝 shallow copy 和深拷贝 deep copy list.copy() 浅拷贝:复制此列表(只复制一层,不会复制深层对象) 等同于 L[:] 举例: 浅拷贝: a = [1.1, 2. ...
随机推荐
- JavaScript学习总结(十四)——JavaScript编写类的扩展方法
在JavaScript中可以使用类的prototype属性来扩展类的属性和方法,在实际开发当中,当JavaScript内置的那些类所提供的动态 ...
- kill prefix out 1 homo,hemero out1
1● homo 同性恋者 2●hetero 异性恋者
- learning shell args handing key=value example (2)
Shell args handing key=value example [Purpose] Learning how to handing ker=value args [Eevi ...
- node.js express 4.x 安装指南 (找了很久呀,痛苦之路)
问题出现这,版本的问题,还有express4.0以上的版本启动node app.js指令的变更,蛋疼.参考这个
- 8 标准库C文件
使用标准C库时,下面哪个选项使用只读模式打开文件. A fopen("foo.txt","r");//r 打开只读文件 B fopen("foo.tx ...
- Syntax error on token(s), misplaced construct(s)
Syntax error on token(s), misplaced construct(s)
- ora-01830:日期格式图片在转换整个输入字符串之前结束
在to_date的时候因为 fldsj这个字段的大小 与 ‘yyyy-MM-dd’不符合 所以需要截取下fldsj字段的大小 to_char(to_date(substr(fldsj,1,10),' ...
- GitLab项目迁移到Gerrit
1.在Gerrit上新建项目: 2.Gerrit项目配置权限(此处非代码): Reference:refs/* Push Annotated Tag Push Signed Tag Forge Com ...
- Python+Requests接口测试教程(2):requests
开讲前,告诉大家requests有他自己的官方文档:http://cn.python-requests.org/zh_CN/latest/ 2.1 发get请求 前言requests模块,也就是老污龟 ...
- convert CAN frame
前言 最近了解了一些socket can的知识点,本文主要介绍如何将数据转换为CAN报文,前提是已经确定CAN的传输协议. 本文使用的CAN报文共有22条,这些报文共用一个can id,每条报文使用序 ...