zoukankan      html  css  js  c++  java
  • Python中的深浅拷贝的区别

    深、浅拷贝总结


    深拷贝

    • 拷贝可变数据类型,如列表容器:

      • a = [1, 2, [3, 4]]
      • b = copy.deepcopy(a)
    • a 与 b 所指的列表容器的空间地址不一致,即 id(a) != id(b)

    • a 与 b 列表容器中的可变数据类型的空间地址不一致

    • a 与 b 列表容器中的不可变数据类型的空间地址一致

    注意:

    • a 列表容器中的某些元素发生改变时,b 容器中的相应元素是否会发生相同的改变?

      答案是: a 容器中的任何元素发生任何变化,与 b 容器毫无瓜葛,b 中元素不会发生变化 !

    图示


    浅拷贝

    • 拷贝可变数据类型,如列表容器:

      • a = [1, 2, [3, 4]]
      • b = copy.copy(a)
    • a 与 b 所指的列表容器的空间地址不一致,即 id(a) != id(b)

    • a 与 b 列表容器中的所有元素的空间地址都是一致的!

    注意:

    • a 列表容器中的某些元素发生改变时,b 容器中的相应元素是否会发生相同的改变?

      答案是:

      1. 若 a 容器中的第一级元素发生改变,b 容器中的相应的元素不会发生改变!
      2. 若 a 容器中的第二级乃至更深层级的元素发生改变,b 容器中的相应元素也会发生相同的改变!

    图示


    深浅拷贝不可变元素

    import copy
    
    a = 10
    b = copy.copy(a)
    b = copy.deepcopy(a)
    

    当深浅拷贝不可变数据类型,如整型时,a 与 b 所指向的空间地址是一致的!

    图示

    抟扶摇而上者九万里
  • 相关阅读:
    【IOS 开发】Object
    互联网开发-前沿与热门
    JS_call_APP native 与 html的交互
    扫描二维码区域限制
    二维码高亮
    charles抓包的使用教程
    Mac 在命令行中获得Root权限
    Mac下安装Wireshark,双击闪退
    iOS 解惑
    IOS_改变UITextField placeHolder颜色、字体
  • 原文地址:https://www.cnblogs.com/fengting0913/p/13346518.html
Copyright © 2011-2022 走看看