浅copy仅仅是对对象的引用,可以理解为是软连接。而深copy是新内存的开辟,他会重新创建内存块存放数据。
简单例子说明:
name_info = {'name':'jack','age':30,'hobby':['movie','football']}
import copy
name_info2 = copy.copy(name_info)
name_info['hobby'][0] = 'music'
print name_info2
print name_info
In [256]: name_info
Out[256]: {'age': 30, 'hobby': ['music', 'football'], 'name': 'jack'}
In [257]: name_info2
Out[257]: {'age': 30, 'hobby': ['music', 'football'], 'name': 'jack'}
可以发现name_info和name_info2都一样,这个就是浅copy。
name_info = {'name':'jack','age':30,'hobby':['movie','football']}
import copy
name_info2 = copy.deepcopy(name_info)
name_info['hobby'][0] = 'music'
print name_info2
print name_info
Out[262]: {'age': 30, 'hobby': ['movie', 'football'], 'name': 'jack'}
In [263]: name_info
Out[263]: {'age': 30, 'hobby': ['music', 'football'], 'name': 'jack'}
可以发现name_info和name_info2是不一样的。