• 自学Python2.6-深浅拷贝


    Python 深浅拷贝

    一、深浅拷贝- 数字、字符串

        对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。

    import copy
    n1=123
    n2=n1        # ## 赋值 ##
    n3=copy.copy(n1)   ## 浅拷贝 ##
    n4=copy.deepcopy(n1)  # ## 深拷贝 ##
    print(id(n1))
    print(id(n2))
    print(id(n3))
    print(id(n4))
    

    输出

    1398763552
    1398763552
    1398763552
    1398763552

    二、深浅拷贝- 其他基本数据类型

        对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

    1、赋值   只是创建一个变量,该变量指向原来内存地址

     

    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
    n2=n1
    print(id(n1))
    print(id(n2))
    

    输出

    2244208
    2244208

    2、浅拷贝  在内存中只额外创建第一层数据

    import copy
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
    n2 = copy.copy(n1)
    print(id(n1))
    print(id(n2))
    

    输出

    30162544
    30162592

    3、深拷贝  在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

     

    import copy
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
    n2 = copy.copy(n1)
    n3 = copy.deepcopy(n1)
    print(id(n1))
    print(id(n2))
    print(id(n3))
    

    输出

    2047600
    2047648
    3111552

  • 相关阅读:
    maven下载源配置
    nvm及node下载源配置
    SourceInsight 添加Symbol Lookup路径
    8.31-使用vscode进行c/c++程序设计
    10.08-vscode-plantuml建模
    6.26-vscode 配置文件
    3.5-VSCode 学习
    3.6-WizNote 常用快捷键
    10.04-CTEST-GTest
    180325-log4cplus
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/7411453.html
Copyright © 2020-2023  润新知