copy&deepcopy
import copy
字典参照列表结论,看是否有深层嵌套。
a = {'name':1,'age':2}
b = a
a['name'] = 'ff'
print(a)
print(b)
print(id(a),id(b))
a = {'name':1,'age':2}
b = copy.deepcopy(a)
a['name'] = 'ff'
print(a)
print(b)
print(id(a),id(b))
"""
{'name': 'ff', 'age': 2}
{'name': 'ff', 'age': 2}
4301093048 4301093048
{'name': 'ff', 'age': 2}
{'name': 1, 'age': 2}
4301093120 4302783256
"""
字符串和元组等不可变数据类型,打死都不变
a = 'ff'
b = a
a = 'ff1'
print(a,b) # ff1 ff
a = 'ff'
b = copy.copy(a)
a = 'ff1'
print(a,b) # ff1 ff
a = 'ff'
b = copy.deepcopy(a)
a = 'ff1'
print(a,b) # ff1 ff
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = c
print(id(c),id(d)) # 4322641352 4322641352
c.append(9)
print(c) # [[1, 2, 3], [4, 5, 6], 9]
print(d) # [[1, 2, 3], [4, 5, 6], 9]
print(id(c),id(d)) # 4322641352 4322641352
d = copy.copy(c)
c.append(9)
print(c) # [[1, 2, 3], [4, 5, 6], 9]
print(d) # [[1, 2, 3], [4, 5, 6]]
c[0].append(8)
print(c) # [[1, 2, 3, 8], [4, 5, 6]]
print(d) # [[1, 2, 3, 8], [4, 5, 6]]
如果只是copy的话,copy.copy() 针对外层依旧是深拷贝,但对内层来讲就是浅拷贝了,会改变值。
d = copy.deepcopy(c)
c.append(9)
print(c) # [[1, 2, 3], [4, 5, 6], 9]
print(d) # [[1, 2, 3], [4, 5, 6]]
c[0].append(8)
print(c) # [[1, 2, 3, 8], [4, 5, 6]]
print(d) # [[1, 2, 3], [4, 5, 6]]
深拷贝, 不管你是啥,只要copy.deepcopy()了。 不管你变不变,我变我是狗。
copy&deepcopy
copy&deepcopy的更多相关文章
- Python面试题之copy/deepcopy详解
copy和deepcopy有什么区别? http://blog.csdn.net/qq_32907349/article/details/52190796 http://iaman.actor/blo ...
- copy.copy()与copy.deepcopy()的详解
copy.copy() 元组和列表调用这个方法效果也不一样. 元组的效果: a = [1,2,3] b = [4,5,6] c = (a,b) e = copy.copy(c) 可以看到:e和c是指向 ...
- Python 浅拷贝copy()与深拷贝copy.deepcopy()
首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要和 == ...
- python中的copy.copy和copy.deepcopy
一个例子就搞清楚 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 ...
- Python 函数参数引用(传值/传址)/copy/deepcopy
精简版: 传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组 ...
- Python 传值和传址 copy/deepcopy
传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组则传值:如 ...
- copy deepcopy辨析
copy deepcopy讲的是复制源对象的改变对copy出来的对象的影响: 我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在. 所以改变原有被复制对象不会对已经复制 ...
- copy & deepcopy
1 import copy 2 3 字典参照列表结论,看是否有深层嵌套. 4 a = {'name':1,'age':2} 5 b = a 6 a['name'] = 'ff' 7 print(a) ...
- [Python] 等号赋值, copy, deepcopy的区别
参考链接: 1. 介绍python中的可变类型与不可变类型:https://blog.csdn.net/answer3lin/article/details/86430074 (也可以参考转载博客 P ...
随机推荐
- codeforces 630C - Lucky Numbers 递推思路
630C - Lucky Numbers 题目大意: 给定数字位数,且这个数字只能由7和8组成,问有多少种组合的可能性 思路: 假设为1位,只有7和8:两位的时候,除了77,78,87,88之外还哇哦 ...
- cookie和session有什么区别,请你谈谈cookie的缺点
1.区别: cookie机制采用的是在客户端保持状态的方案 session机制采用的是在服务端保持状态的方案 2.cookie: 优点: 1> 极高的扩展性和可用性 2> 通过编程方式,控 ...
- <算法>进制转换超详细
16转10 用竖式计算: 16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第 ...
- Maven SpringMVC整合Mybatis
关于Spring的核心理念和Mybatis的优点网上已经有很多文档做了说明.这篇博客,只记录springmvc整合mybatis时常见的知识点,以及注意事项,它只有最精简的几个模块,以帮助初学者迅速搭 ...
- android动画介绍之 自己定义Animation动画实现qq抖一抖效果
昨天我们介绍了Animation的基本使用方法.小伙伴们了解的怎么样了?假设还没有了解过Animation的小伙伴能够看看这篇博客 android动画介绍--Animation 实现loading动画 ...
- 王立平--WebView的缓存机制
WebView的缓存能够分为页面缓存和数据缓存. 1. 页面缓存是指载入一个网页时的html.JS.CSS等页面或者资源数据. 这些缓存资源是因为浏览器的行为而产生.开发人员仅仅能通过配置HTTP ...
- org.hibernate.LazyInitializationException could not initialize proxy-no Session的解决
方法一:在web.xml配置延迟关闭session的过滤器 <!-- 延迟关闭session OpenSessionInViewFilter 的顺序位于struts2过滤之上 否则延迟关闭ses ...
- “command line option syntax error,Type command/?for help
VS2010安装WDT时出现"command line option syntax error.Type command/?for help错误 解决:可能是由于你的安装源文件所在的路径中有 ...
- node.js平台下,cropper.js实现图片裁剪预览并转换为base64发送至服务端。
一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...
- jQuery->JavaScript一览表
比较jQuery与JavaScript的不同功能实现 CSS选择器 元素选择 // jQuery $("li").css("color", "red& ...