深拷贝与浅拷贝的区别
浅复制shadow copy —–
1,只拷贝对象自身,仅仅是指向被复制的内存地址;
2,内层列表的引用没有拷贝,即浅拷贝拷贝的是第一层引用;
3,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。
深复制deep copy —-
1,开辟了一块新的内存地址用于存放复制的对象;
2,深拷贝会拷贝列表里面的所有引用。
3,修改a里面的列表的引用的时候,不会影响b;
浅拷贝对数据类型的不同:
1,浅拷贝copy.copy对不可变类型(数字、字符串、元组)和可变类型(列表和字典)的copy不同:
对变进行浅拷贝;
对不变不拷贝,仅仅是指向。
2,深拷贝deep copy不分类型,全部拷贝。
(面试题)除了深拷贝和浅拷贝,你还知道哪些拷贝的方式?
1、对于列表:可以有切片的方式进行浅拷贝:
b = a[:] # 浅拷贝
2、对于列表和字典:可以用python的内置方法进行浅拷贝(列表和字典独有的方法)
copy()方法,例如:
列表名.copy()
字典名.copy()