【Python基础知识库】Python浅拷贝与深拷贝

    技术2025-12-03  14

    赋值:对象赋值实际上是对象的引用。类似于改名字,内部结构、内存空间地址都一样,赋值给另一个变量的时候,并没有拷贝这个对象,而是拷贝了这个对象的引用。

    浅拷贝:另开辟新内存空间,只拷贝父结构,没有拷贝子对象,所以原始数据改变,子对象会改变。

    import copy a = [1, 2, 3, ['a', 'b']] b = copy.copy(a) a.append(5) print(a) print(b) # 结果1 ''' a = [1, 2, 3, ['a', 'b'], 5] b = [1, 2, 3, ['a', 'b']] ''' # 若a的子对象['a', 'b']发生改变 a[3].append('c') print(a) print(b) # 结果2 ''' a = [1, 2, 3, ['a', 'b', 'c'], 5] b = [1, 2, 3, ['a', 'b', 'c']] '''

    深拷贝:另开辟新内存空间,拷贝对象里面所有的元素,包括父子任何元素,与原始对象已经无任何关系,所以原始对象改变不会造成深拷贝后任何父子元素的改变。

    import copy a = [1, 2, 3, ['a', 'b']] c = copy.deepcopy(a) a.append(5) print(a) print(c) # 结果1 ''' a = [1, 2, 3, ['a', 'b'], 5] c = [1, 2, 3, ['a', 'b']] ''' # 若a的子对象['a', 'b']发生改变,而C始终不变 a[3].append('c') print(a) print(c) # 结果2 ''' a = [1, 2, 3, ['a', 'b', 'c'], 5] b = [1, 2, 3, ['a', 'b']] '''
    Processed: 0.017, SQL: 9