python深拷贝和浅拷贝

>>> student={"100":"zhansan","aihao":["football","music"]}
>>> student
{'100': 'zhansan', 'aihao': ['football', 'music']}
>>> student_copy=student.copy()
>>> student_deepcopy=copy.deepcopy(student)
>>> id(student['100'])
2312245610904
>>> id(student_copy['100'])
2312245610904
>>> id(student_deepcopy['100'])
2312245610904
>>> id(student['aihao'])
2312245623240
>>> id(student_copy['aihao'])
2312245623240
>>> id(student_deepcopy['aihao'])
2312245624200

>>> x
{'name': 'quit', 'lang': ['python', 'java', 'C']}
>>> y
{'name': 'qian', 'lang': ['python', 'java', 'C']}
>>> z
{'name': 'quit', 'lang': ['python', 'java', 'C']}
>>> y['lang'].remove('C')
>>> x
{'name': 'quit', 'lang': ['python', 'java']}
>>> y
{'name': 'qian', 'lang': ['python', 'java']}
>>> z
{'name': 'quit', 'lang': ['python', 'java', 'C']}
>>> z['name']='shen'
>>> x
{'name': 'quit', 'lang': ['python', 'java']}
>>> y
{'name': 'qian', 'lang': ['python', 'java']}
>>> z
{'name': 'shen', 'lang': ['python', 'java', 'C']}
>>> z['lang'].remove('java')
>>> x
{'name': 'quit', 'lang': ['python', 'java']}
>>> y
{'name': 'qian', 'lang': ['python', 'java']}
>>> z
{'name': 'shen', 'lang': ['python', 'C']}

1、浅拷贝

列表这类对象仍然是复制了引用,没有重建新对象

字符串、数字等对象重新建立了新对象

2、深拷贝

所有元素都新建了新对象

原文地址:https://www.cnblogs.com/tuobei/p/9372904.html