Python 深copy和浅copy
Python 深copy和浅copy
雪地花露 发表于1年前
Python 深copy和浅copy
  • 发表于 1年前
  • 阅读 16
  • 收藏 1
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

浅copy 所谓“浅拷贝”,是指创建一个新的对象,其内容是原对象中元素的引用。(拷贝组合对象,不拷贝子对象)个人理解,关键是根据子元素的指向地址是否一样来判断

注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。 常见的浅拷贝有:切片操作、工厂函数、对象的copy()方法、copy模块中的copy函数。 深copy 所谓“深拷贝”,是指创建一个新的对象,然后递归的拷贝原对象所包含的子对象。深拷贝出来的对象与原对象没有任何关联。 注意如果子元素是不可变对象时,深copy对象的子元素所对应的指向地址会和原对象子元素一样 但是相互独立的, 下面的这个例子中子元素是可变的对象

import copy a = [[1, 2],[5, 6], [8, 9]] b = copy.copy(a) # 浅拷贝得到b c = copy.deepcopy(a) # 深拷贝得到c 深拷贝只有一种方式:copy模块中的deepcopy函数。 import copy a = [1, 2, 3] b = copy.deepcopy(a) print(id(a), id(b)) 140601785065840 140601785066200 总结:

1、赋值:简单地拷贝对象的引用,两个对象的id相同。 2、浅拷贝:创建一个新的组合对象,这个新对象与原对象共享内存中的子对象。 3、深拷贝:创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。

浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。

共有 人打赏支持
粉丝 6
博文 29
码字总数 32598
×
雪地花露
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: