python中的浅拷贝深拷贝的概念和C++里面的浅拷贝深拷贝是一样的。所谓浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝,边看例子边解释:
#1
上面的例子,复制操作 c_ls1 = ls1,是浅拷贝,当c_ls1的值改变的时候,ls1的值跟着改变
#2
上面的例子,用for循环生成新的list对象,当改变c_ls2的值时,ls1的值没有跟着改变,这就是深拷贝吗?且继续往下看:
#3
#3 和 #2难道有矛盾?不。
解释:for循环操作的时候,把ls1中的每一个对象的引用拷贝,而ls1中的前3个元素是字符串对象,在python中,字符串对象赋值操作是:变量指向存放字符串的地址,所以看起来好像是深拷贝,实际上还是浅拷贝,若不信,请继续往下看:
#4
id(obj)可以看做C++里面的对象内存地址。
那么,在pyhton,深拷贝在哪呢?不急,下面就是了
#5
深拷贝,浅拷贝,掌握之中……