python中[:]的含义(深拷贝与浅拷贝)

python里传对象引用相当于传地址

python中[:]的含义(深拷贝与浅拷贝)

id()函数返回的是对象指向的内存地址

a=test表明是浅拷贝,a和test指向的还是同一片内存地址

b = test[:]则是深拷贝,相当于复制了一片内存地址,重新用变量b来指向这块新的内存地址

浅拷贝会发生的一个问题就是

python中[:]的含义(深拷贝与浅拷贝)

通过a修改了值的化,test也会变。可以用copy.copy或copy.deepcopy。

两者效率不一样,后者是用递归实现的,速度比copy.copy慢