Python(十六)——深拷贝和浅拷贝
一、定义
浅拷贝(copy):不拷贝子对象的内容,只是拷贝子对象的引用。
深拷贝(deepcopy):会连子对象的内存也全部一起拷贝一份,对子对象的修改不会影响源对象。
通俗解释:深拷贝是拷贝一个人,连带着儿子和孙子都会拷贝,浅拷贝是只拷贝一个人,再指向原来的儿子和孙子。
二、代码部分
import copy
def test1():
'''浅拷贝'''
a = [1,2,[3,4]]
b = copy.copy(a)
print('a:',a)
print('b',b)
b.append(30)
b[2].append(40)
print('浅拷贝之后————————————')
print('a:',a)
print('b:',b)
if __name__=='__main__':
test1()
#a: [1, 2, [3, 4]]
#b [1, 2, [3, 4]]
#浅拷贝之后————————————
#a: [1, 2, [3, 4, 40]]
#b: [1, 2, [3, 4, 40], 30]
def test2():
'''深拷贝'''
a = [1,2,[3,4]]
b = copy.deepcopy(a)
print('a:',a)
print('b',b)
b.append(30)
b[2].append(40)
print('深拷贝之后————————————')
print('a:',a)
print('b:',b)
if __name__=='__main__':
test2()
#a: [1, 2, [3, 4]]
#b [1, 2, [3, 4]]
#深拷贝之后————————————
#a: [1, 2, [3, 4]]
#b: [1, 2, [3, 4, 40], 30]
三、总结、
深拷贝不对对数据源造成任何改变、。