Python之深拷贝和浅拷贝
2017-12-14 15:00
127 查看
**# 浅拷贝:python所执行的复制动作中,如果是基本类型的数据(数字,字符串),就在内存中重新见一个窝,如果不是基本数据类型(列表,元祖,字典),就不用重新建窝即可,而是标签引用原来的窝。
# .copy()则是浅拷贝
# 深拷贝:所执行的复制的动作中,无论是基本数据类型,还是复杂数据类型 都会建一个窝来存储复制“对象的内容*
# .copy()则是浅拷贝
# 深拷贝:所执行的复制的动作中,无论是基本数据类型,还是复杂数据类型 都会建一个窝来存储复制“对象的内容*
# = 复制 x = {"name":"qiswe","lang":["python","java","c"]} y = x #id(x) = 66983424 #id(y) = 66983424 #x和y对象所引用是一个对象 所谓的假拷贝 # 浅拷贝 .copy()函数 复制 x = {"name":"qiswe","lang":["python","java","c"]} y = x.copy() #id(x) = 67022784 #id(y) = 72002800 # 这次得到y与原来的x是不同的,他在内存中开辟了一个空间。 y["name"] = "qisse" print(y) {'name': 'qisse', 'lang': ['python', 'java', 'c']} id(y["name"]) 72008736 print(x) {'name': 'qiswe', 'lang': ['python', 'java', 'c']} id(x["name"]) 72010016 # y进行的修改不会对x有影响 # 注: y["lang"].append("c++") print(y) {'name': 'qisse', 'lang': ['python', 'java', 'c', 'c++']} print(x) {'name': 'qiswe', 'lang': ['python', 'java', 'c', 'c++']} #修改y对象列表时会对x造成影响 ,修改字符串时不会对x产生影响 #原因是浅拷贝是:浅拷贝 python所执行的复制动作中,如果是基本类型的数据(数字,字符串),就在内存中重新建一个窝,如果不是基本数据类型(列表,元祖,字典),就不用重新建窝即可,而是标签引用原来的窝。 !浅拷贝分析图](http://img.blog.csdn.net/20171214145259526?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3N4aWFvZmVpb28=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 深拷贝: 深拷贝 所执行的复制的动作中,无论是基本数据类型,还是复杂数据类型 都会新建一个窝来存储复制对象的内容 import copy x = {"name":"qiswe","lang":["python","java","c"]} y = copy.deepcopy(x) y["lang"].append("c++") print(y) {'name': 'qiswe', 'lang': ['python', 'java', 'c', 'c++']} print(x) {'name': 'qiswe', 'lang': ['python', 'java', 'c']} # y的修改不会对x造成修改 这是所谓的浅拷贝和深拷贝的区别 欢迎大家指出错误!!!!!!
相关文章推荐
- python 对象拷贝
- 求助:python中深拷贝和浅拷贝的一道题目
- 你真得理解 python 的浅拷贝和深拷贝吗?
- python中的深拷贝与浅拷贝解析
- python知识点1之引用、拷贝、函数参数传递、实例调用了类变量
- python拷贝对象
- 深入理解 python 中的赋值、引用、拷贝、作用域
- Python高级之——浅拷贝、深拷贝(deepcopy、copy的区别)
- Python中赋值、浅拷贝与深拷贝
- python 深入理解 赋值、引用、拷贝、作用域
- python中的对象拷贝
- Python浅拷贝和和深拷贝
- python3 -- 列表操作 -深拷贝、浅拷贝、遍历
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- 拷贝Python对象:深拷贝与浅拷贝
- python深、浅拷贝
- python 引用和拷贝
- python 浅拷贝(shallow copy) 深拷贝(deep copy)
- python中的深拷贝与浅拷贝
- 【转】Python浅拷贝与深拷贝