浅拷贝和深拷贝
原创...小于 1 分钟
为了更深入的了解参数传递的底层原理,我们需要讲解一下“浅拷贝和深拷贝”。我们可以使用内置函数: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