跳至主要內容

浅拷贝和深拷贝

刘春龙原创...小于 1 分钟Python教程文档

为了更深入的了解参数传递的底层原理,我们需要讲解一下“浅拷贝和深拷贝”。我们可以使用内置函数:copy(浅拷贝)、deepcopy(深拷贝)。

浅拷贝:拷贝对象,但不拷贝子对象的内容,只是拷贝子对象的引用。
深拷贝:拷贝对象,并且会连子对象的内存也全部(递归)拷贝一份,对子对象的修改不会影响源对象

import copy

def testCopy():
    """测试浅拷贝"""
    a = [10, 20, [5, 6]]
    b = copy.copy(a)

    print("a", a) #  [10, 20, [5, 6]]
    print("b", b) #  [10, 20, [5, 6]]
    b.append(30)
    b[2].append(7)
    print("浅拷贝......")
    print("a", a) # [10, 20, [5, 6, 7]]
    print("b", b) # [10, 20, [5, 6, 7], 30]

def testDeepCopy():
    """测试深拷贝"""
    a = [10, 20, [5, 6]]
    b = copy.deepcopy(a)

    print("a", a) # [10, 20, [5, 6]]
    print("b", b) # [10, 20, [5, 6]]
    b.append(30)
    b[2].append(7)
    print("深拷贝......")
    print("a", a) # [10, 20, [5, 6]]
    print("b", b) # [10, 20, [5, 6, 7], 30]

testCopy()
print("*************")
testDeepCopy()
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7