浅复制

浅复制

写在前面

这是笔者的在python学习过程中的一些笔记,如有误,还请谅解。

python学习心得(四)

由==copy()==方法解释浅复制

在字典类型的学习中,有这样一个方法copy(),在官方文档中,它的解释是这样的:

copy()

Return a shallow copy of the dictionary.

事实上,copy方法实现的是一种浅复制,即只复制会简单复制对象内部的值,而不是复制整个对象

>>> d = {'a':1,'b':2,'c':3} 
>>> d2 = d.copy()
>>> print(d,d2,id(d),id(d2))
{'a': 1, 'b': 2, 'c': 3} {'a': 1, 'b': 2, 'c': 3} 59960224 55173744
>>> d = d2
>>> print(d,d2,id(d),id(d2))
{'a': 1, 'b': 2, 'c': 3} {'a': 1, 'b': 2, 'c': 3} 55173744 55173744

由此,我们明显可以看出在d2 = d.copy()处理后,d与d2的id有变化,说明此时的d与d2指向的并不是同一对象,而后d = d2中,d与d2指向的是同一对象,因此他们的id相同

浅复制的好处:通过浅复制,复制以后的对象,和原对象是独立,修改一个不会影响另一个复制以后的对象,和原对象是独立,修改一个不会影响另一个。

注意:浅复制会简单复制对象内部的值,如果值也是一个可变对象,这个可变对象不会被复制

>>> d = {'a':{'name':'孙悟空','age':18},'b':2,'c':3}
>>> d2 = d.copy()
>>> d2['a']['name'] = '猪八戒'
>>> print('d = ',d , id(d)) 
d =  {'a': {'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3} 59999648
>>> print('d2 = ',d2 , id(d2))
d2 =  {'a': {'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3} 55083968
发布了14 篇原创文章 · 获赞 2 · 访问量 518

猜你喜欢

转载自blog.csdn.net/qq_45828448/article/details/104100444