''' 深拷贝和浅拷贝 ''' import copy a = 1 b = copy.copy(a) # 浅拷贝 c = copy.deepcopy(a) # 深拷贝 print(a is b) print(a is c) ''' >>> True >>> True 不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值 ''' # copy a = [1, 2, [3, 4]] b = copy.copy(a) print(a is b) print(a[2] is b[2]) ''' >>> False >>> True 浅拷贝只拷贝第一层,所以b拷贝出来的内存地址是与a不同的, 但因为浅拷贝只能拷贝第一层,所以b[2]这个列表拷贝不到,指向的内存地址仍然是a[2]的内存地址 ''' # deepcopy a = [1, 2, [3, 4]] b = copy.deepcopy(a) print(a is b) print(a[2] is b[2]) ''' >>> False >>> False 深拷贝对于可变的对象,全部拷贝下来,全部都开辟一片新的内存地址 '''
评论
评论功能已经关闭!