对于不可变类型:无论深浅拷贝都是拷贝引用
对于可变类型,如果是浅拷贝,只会拷贝外层,内层还是拷贝引用;如果是深拷贝,则直接生成新对象;
浅拷贝copy:对于一个对象顶层拷贝,拷贝了引用,没拷贝内容
对不可变类型会拷贝引用,对可变类型会生成新对象
如果有嵌套,则只考虑外层,外层为不可变类型则拷贝引用,外层为可变类型则生成新对象,无论外层为可变还是不可变,内层都是拷贝引用。
[] 和{} 会拷贝成新对象
[[],[]] 列表嵌套,只会拷贝外层,外层生成新对象,内层只拷贝引用
[(),()] 列表嵌套元组,外层生成新对象,内层拷贝引用
([],[])外层拷贝引用,内层也拷贝引用
((),())外层拷贝引用,内层拷贝引用
深拷贝deepcopy:对一个对象所有层次进行拷贝
对不可变类型拷贝引用,对可变类型会生成新对象
如果有嵌套,会遍历整个对象,对可变对象生成新对象,对不可变对象拷贝引用
[] 和{} 会拷贝成新对象
[[],[]] 内外都会拷贝生成新对象
[(),()] 外层拷贝生成新对象,内层拷贝引用
([],[])外层拷贝引用,内层拷贝对象
((),())内外层欧式拷贝引用