您的位置: 网站首页> python进阶> 当前文章
浅拷贝、深拷贝、==和is介绍
老董-我爱我家房产SEO2019-06-06175围观,142赞
浅拷贝与深拷贝:
浅拷贝是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容
深拷贝是对于一个对象所有层次的拷贝(递归)
# -*- coding: utf-8 -*- import copy print("以下是浅拷贝,a变化后b也变化") a = [1,2,3] b = a print(a,id(a)) print(b,id(b)) a.append("哈哈") print(a,id(a)) print(b,id(b)) print("以下是深拷贝,a变化后b未变化") a = [1,2,3] b = copy.deepcopy(a) print(a,id(a)) print(b,id(b)) a.append("哈哈") print(a,id(a)) print(b,id(b)) print("以下代码助你进一步理解拷贝") a = [1,2,3] b = [4,5,6] c = [a,b] d = c print(c,id(c)) print(d,id(d)) e = copy.deepcopy(c) print(e,id(e)) a.append("哈哈") print(c,id(c)) print(d,id(d)) print(e,id(e))
D:python3installpython.exe D:/python/py3script/python66_2.py 以下是浅拷贝,a变化后b也变化 [1, 2, 3] 2740365258824 [1, 2, 3] 2740365258824 [1, 2, 3, '哈哈'] 2740365258824 [1, 2, 3, '哈哈'] 2740365258824 以下是深拷贝,a变化后b未变化 [1, 2, 3] 2740365258888 [1, 2, 3] 2740365193096 [1, 2, 3, '哈哈'] 2740365258888 [1, 2, 3] 2740365193096 以下代码助你进一步理解拷贝 [[1, 2, 3], [4, 5, 6]] 2740365193096 [[1, 2, 3], [4, 5, 6]] 2740365193096 [[1, 2, 3], [4, 5, 6]] 2740365193032 [[1, 2, 3, '哈哈'], [4, 5, 6]] 2740365193096 [[1, 2, 3, '哈哈'], [4, 5, 6]] 2740365193096 [[1, 2, 3], [4, 5, 6]] 2740365193032 Process finished with exit code 0
is 是比较两个引用是否指向了同一个对象(引用比较)。
== 是比较两个对象是否相等。
# -*- coding: utf-8 -*- import copy a = [1,2,3] b = a print(b == a) print(b is a) c = copy.deepcopy(a) print(c == a) print(c is a)
D:python3installpython.exe D:/python/py3script/python66_2.py
True
True
True
False
Process finished with exit code 0
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
下一篇:异步和多线程的区别?有什么关系
相关文章
文章评论
-
浅拷贝、深拷贝、==和is介绍文章写得不错,值得赞赏