美文网首页
py3笔记3:赋值&浅拷贝&深拷贝

py3笔记3:赋值&浅拷贝&深拷贝

作者: _百草_ | 来源:发表于2023-05-13 16:09 被阅读0次
    # 直接赋值,对象的引用
    a = {"name":[1,2,3]}
    b = a
    print(id(a),id(b))  # 2095006747840 2095006747840
    
    # 浅拷贝:拷贝父对象,不会拷贝对象的内部子对象
    b = a.copy()
    print(id(a),id(b))  # 2349287410880 2349287411072
    a["age"] = 18  # 父对象相互不影响
    print(a,b)  # {'name': [1, 2, 3], 'age': 18} {'name': [1, 2, 3]}
    a["name"].append(4)  # 内部子对象改变,会相互影响
    print(a,b)  # {'name': [1, 2, 3, 4], 'age': 18} {'name': [1, 2, 3, 4]}
    
    # 深拷贝:copy模块的deepcopy方法,完全拷贝了父对象及其子对象
    import copy
    b = copy.deepcopy(a)
    print(id(a),id(b))  # 1878979054720 1878979129984
    a["name"].insert(2, 10) # 仅a的子对象改变,不影响b
    print(a,b) # {'name': [1, 2, 10, 3, 4], 'age': 18} {'name': [1, 2, 3, 4], 'age': 18}
    
    赋值&浅拷贝
    深拷贝

    参考:https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html

    相关文章

      网友评论

          本文标题:py3笔记3:赋值&浅拷贝&深拷贝

          本文链接:https://www.haomeiwen.com/subject/iyfusdtx.html