总结:
''' 总结:假设l1为原数据,l2为deepcopy后的数据: 1.浅copy,只能改变第一层的内存地址(不可变数据类型除外)。 2.深copy,能够改变第一层和第二层的内存地址(不可变数据类型除外)。 3.不可变类型,地址不会发生变化,且不可使用copy ,可以使用copy.deepcopy()。 4.对deepcopy后的l1或l2数据修改时,l1和l2的内存地址都会发生变化,但l1和l2的数据不会相互干扰。 ''' import copy l1=[{'name':'jack'},(1,2,3)] l2=copy.deepcopy(l1) # l2=l1.copy() print("第一层地址变化") print(id(l1)) print(id(l2)) print('第三层字典变化') print(id(l1[0]['name'])) print(id(l2[0]['name'])) print('第二层元祖变化') print(id(l1[1])) print(id(l2[1])) l3=(1,2,3) # l4=copy.deepcopy(l3) l4=l3.copy() print("第一层地址变化") print(id(l3)) print(id(l4))
总结:经验固然可贵,但唯有实践出真知。