Python 是如何copy对象的
我们平时工作的时候,经常复制一段文字、一个文件保存到另外地方,或者发送消息,这就是通过COPY一段文字、一个文件。
那我们在python中代码编制中是如何实现对象复制的呢?
我们看看我们通过对一个变量赋值,然后赋值给另外一个变量,好像和复制差不多,感觉差不多,那算不算copy呢?
a = 1
b=a
我们这样赋值 b 也是1了,但它确实不算copy,因为它不会创建新的对象,原则上是a的一个引用。我们通过修改a的时候,b也发生相应改变来证明这一点。
下面我们看看copy的实现:
a = [1, 2, [3, 4]]
b = a.copy() # 浅拷贝
print(b)#输出b看看
当然我们也可以调用copy模块来实现:
import copy
a = [1, 2, [3, 4]]
b = copy.copy(a) # 浅拷贝
print(b)
同样也是可以实现copy的效果
我们再来看下面的代码,最好还是自己也调试运行下
import copy
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)#深度拷贝
a[2][0] = 300 # 修改嵌套元素,不会影响 b 创建了新的对象
print(b) # 输出 [1, 2, [3, 4]]
我们发现b是a一个copy ,但是我们修改a,b 依旧不发生改变,和引用是不一样的,我们很容易发现复制不会产生新对象,浅拷贝、深度拷贝都产生了新的对象,我们在实际工作中,避免使用引用修改了原来的值,我们在这种情况下,我们应该考虑copy,避免改变原值导致意外修改。