zoukankan      html  css  js  c++  java
  • Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    转自:http://www.cnblogs.com/zxlovenet/p/4575228.html 

    首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响。

    然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数。

    一、字典数据类型的copy函数,当简单的值替换的时候,原始字典和复制过来的字典之间互不影响,但是当添加,删除等修改操作的时候,两者之间会相互影响。

     
    1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
    2. copy.deepcopy 深拷贝 拷贝对象及其子对象
    一个很好的例子:
    # -*-coding:utf-8 -*-
    import copy
    = [1, 2, 3, 4, ['a', 'b']] #原始对象
     
    = a #赋值,传对象的引用
    = copy.copy(a) #对象拷贝,浅拷贝
    = copy.deepcopy(a) #对象拷贝,深拷贝
     
    a.append(5) #修改对象a
    a[4].append('c') #修改对象a中的['a', 'b']数组对象
     
    print 'a = ', a
    print 'b = ', b
    print 'c = ', c
    print 'd = ', d
    输出结果:
    a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    c =  [1, 2, 3, 4, ['a', 'b', 'c']]
    d =  [1, 2, 3, 4, ['a', 'b']]

     

  • 相关阅读:
    C字符串格式化
    oms登录bug
    宏旺文章审核功能使用指引
    phpcms文章审核
    html5的pushState 无刷新, 前进后退等
    js路由—backbone的路由的实现02
    js路由—backbone的路由的实现01
    js路由—简单路由的实现
    img标签和css的background-image的区别
    querySelector与querySelectorAll
  • 原文地址:https://www.cnblogs.com/yycc/p/7346395.html
Copyright © 2011-2022 走看看