Python中copy,deepcopy,浅拷贝(“=”)和深拷贝(“copy.deepcopy()”)

python中对于对象的拷贝分为浅拷贝(copy)和深拷贝(deepcopy)两种方式。其中浅拷贝由“=”完成。而深拷贝由copy模块中deepcopy()函数担任。

浅拷贝和深拷贝的区别是:
浅拷贝只是将原对象在内存中引用地址拷贝过来了。让新的对象指向这个地址。
而深拷贝是将这个对象的所有内容遍历拷贝过来了,相当于跟原来没关系了,所以如果你这时候修改原来对象的值跟他没关系了,不会随之更改。

我觉得深拷贝和浅拷贝的区别在于:
对于浅拷贝来说,如果有一方的内容发生了变化,另一方有可能也会发生变化
而深拷贝,无论哪一方发生什么样的变化,另一方都不会发生改变。

 

小例子:

深拷贝的一个例子(我们通过深拷贝创建了两个生成器“genA2B_ema”以及“genB2A_ema”):

        self.genA2B = ResnetGenerator(input_nc=3, output_nc=3, ngf=self.args.ch, n_blocks=self.args.n_res, img_size=self.args.img_size, args=self.args).to(self.args.device)
        self.genB2A = ResnetGenerator(input_nc=3, output_nc=3, ngf=self.args.ch, n_blocks=self.args.n_res, img_size=self.args.img_size, args=self.args).to(self.args.device)
        self.genA2B_ema = copy.deepcopy(self.genA2B).eval().requires_grad_(False)
        self.genB2A_ema = copy.deepcopy(self.genB2A).eval().requires_grad_(False)

具体的用法看以下链接:

Python中copy,deepcopy,=之深拷贝浅拷贝使用详解_涤生手记大数据-CSDN博客_python中deepcopy的用法

Python---copy()、deepcopy()与赋值的区别_飘过的春风-CSDN博客_copy.deepcopy

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:酷酷鲨 设计师:CSDN官方博客 返回首页
评论

打赏作者

马鹏森

太谢谢了

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值