下列代码执行后,结果是
x=list(“abc”)
z=x[:]
x.append(“f”)
print(z)
A.[‘a’,‘b’,‘c’]
B.[]
C.代码出错
D.[‘a’,‘b’,‘c’,‘f’]
python里传对象引用相当于传地址
x=list(“abc”) 创建一个列表并赋值给变量 x ,栈区存放x 指向堆区的 list
z=x[:]
z = x[:]是深拷贝,相当于复制了一片内存地址,重新用变量z来指向这块新的内存地址,此时内存地址已经发生了变化
区分下深拷贝和浅拷贝的原理。就懂了
备注:浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 。
深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象。
区别:浅拷贝基本类型之前互不影响,引用类型其中一个对象改变了地址,就会影响另一个对象;深拷贝
改变新对象不会影响原对象,他们之前互不影响