zoukankan      html  css  js  c++  java
  • 深浅拷贝

    定义 直接赋值:就是对象的引用(别名) 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象 深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象 解释b
     

    定义

    • 直接赋值:就是对象的引用(别名)
    • 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象
    • 深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象

    解释

    b = a: 赋值引用,a和b都指向同一个对象

    b = a.copy(): 浅拷贝,a和b都是一个独立的对象,但它们的子对象是指向统一对象(是引用)

    b = copy.deepcopy(a): 深拷贝,a和b完全拷贝了父对象及其子对象,两者是完全独立的

    示例

    以下是直接赋值、浅拷贝和深拷贝之对比

    import copy
     
    a = [1, 2, 3, 4, ['a', 'b']]  #原始对象
     
    b = a        #直接赋值,原始对象的引用
    c = copy.copy(a)     #浅拷贝
    d = copy.deepcopy(a)    #深拷贝
     
    a.append(5)      #修改对象a
    a[4].append('c')     #修改对象a中的['a', 'b']列表对象
     
    print( 'a = ', a )
    print( 'b = ', b )
    print( 'c = ', c )
    print( 'd = ', d )

    以上实例执行输出结果为:

    a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    c = [1, 2, 3, 4, ['a', 'b', 'c']]
    d = [1, 2, 3, 4, ['a', 'b']]

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/jeavy/p/14880355.html
Copyright © 2011-2022 走看看