zoukankan      html  css  js  c++  java
  • python copy与deepcopy (拷贝与深拷贝)

    copy与deepcopy

    python 中的copy与deepcopy是内存数据的操作,但是两个函数有一定的区别。

    1.copy

    复制代码
    import copy
    list = [1, [4, 5, 6], 2, 3]
    list1 = copy.copy(list)
    
    print id(list)

    print id(list[1]) print id(list1) print id(list1[1]) list[2] = 100 list[1][0] = 44 print list print list1 结果: 46925320 46912776 46967368 46912776 [1, [44, 5, 6], 100, 3] [1, [44, 5, 6], 2, 3]
    复制代码

    经过copy操作的得两个list,list1拥有两个同的地址(46925320和46967368),修改list时不会影响list1的值,但是 list中间的子列表[4,5,6]在list和list1中有相同的地址46912776,所以在修改list中的子列表会影响到list1中的子列表。

    2.deepcopy

    复制代码
    import copy
    list = [1, [4, 5, 6], 2, 3]
    list2 = copy.deepcopy(list)
    
    print id(list)
    print id(list[1])
    print id(list2)
    print id(list2[1])
    
    list[2] = 100
    list[1][0] = 44
    print list
    print list2
    
    结果:
    59508232
    59495688
    59509384
    59508168
    [1, [44, 5, 6], 100, 3]
    [1, [4, 5, 6], 2, 3]
    复制代码

    经过deepcopy的list与list2用有不用的地址59508232,59509384,其中的子列表页拥有不同的地址, 所以不论怎样修改list都不用影响到list2。

    结论:

    经过copy操作的两个数据对象拥有不同的得地址空间 ,但是这个数据对象如果是内嵌了其他的复杂数据对象,这个内嵌的数据对象在

    两个数据对象中拥有相同的地址空间,修改其中的值会互相印象。经过deepcopy的操作的不管是内层还是外层数据对象都拥有不同的地址空间,修改其中的值不会对两个对象都造成影响

  • 相关阅读:
    软件测试流程
    Python2 RF(3.0.4)与Python3 RF(3.1.2)区别
    Ubuntu Install RobotFramework with Python3
    Beta测试与Alpha测试有什么区别
    网络协议,如TCP/UDP的区别?
    缺陷相关知识
    linux_machine-id
    monkey自定义脚本实践
    Monkey事件
    Linux虚拟机fdisk分区
  • 原文地址:https://www.cnblogs.com/shona/p/11346206.html
Copyright © 2011-2022 走看看