• 深拷贝与浅拷贝


    浅拷贝:拷贝了最外围的实体本身,内部的元素只是拷贝了一个引用,也就是说,把实体拷贝一遍,但是该实体中的其他实体不拷贝
    深拷贝:外围和内部的实体都会被拷贝,拷贝是实体本身,而不是引用
    
    变量  num = 10
    引用  num
    不可变实体:一旦创建就不能发生改变,包括数字,字符串,元组
    可变实体:可以进行修改的实体,包括列表,字典
    
    ​
    深浅拷贝的作用:减少内存的使用【以后做数据的清洗,修改或者其他操作的时候,对原数据拷贝一份,以防数据被修改之后,找不到原数据】
    ​
    一、对于不可变实体的深浅拷贝
    a = (1,2,3)
    1.浅拷贝
    1.1浅拷贝:=
    print("浅拷贝:=的拷贝")
    b = a
    print(a)
    print(b)
    print(id(a))
    print(id(b))
    ​
    1.2浅拷贝:copy()
    第一步:导入模块  import copy
    print("浅拷贝:copy的拷贝")
    c = copy.copy(a)
    print(a)
    print(c)
    print(id(a))
    print(id(c))
    ​
    2.深拷贝
    deepcopy()
    d = copy.deepcopy(a)
    print(a)
    print(d)
    print(id(a))
    print(id(d))
    ​
    print("**********************")
    ​
    二、可变实体的深浅拷贝
    a = [1,2,3]
    1.浅拷贝
    1.1=
    print("浅拷贝:=的拷贝")
    b = a
    print(a)
    print(b)
    print(id(a))
    print(id(b))
    ​
    1.2copy
    print("浅拷贝:copy的拷贝")
    c = copy.copy(a)
    print(a)
    print(c)
    print(id(a))
    print(id(c))
    ​
    2.深拷贝
    deepcopy()
    d = copy.deepcopy(a)
    print(a)
    print(d)
    print(id(a))
    print(id(d))
    ​
    
    总结:
    a.深浅拷贝都是对原实体的拷贝,区别在于是 实体的拷贝还是引用的拷贝【堆空间还是栈空间】
    b.不可变的实体:对于深浅拷贝毫无影响,最终的地址和值都是相等的
    c.可变的实体:
        =浅拷贝:值相等,地址相等
        copy浅拷贝:值相等,地址不相等
        deepcopy深拷贝:值相等,地址不相等
    

     

  • 相关阅读:
    性能测试目的和性能测试主要术语
    回数
    python求100以内的素数
    杨辉三角
    裴波那契数列
    day12_框架二sendmail.py代码
    codeforces 1435 E
    codeforces C
    codeforces 1436E
    codeforces 1435 D. Shurikens (贪心)
  • 原文地址:https://www.cnblogs.com/URNOTBENBEN/p/13962846.html
Copyright © 2020-2023  润新知