1.浅拷贝
浅拷贝:只进行对栈区的拷贝,不拷贝堆区的内容;言外之意就是,只拷贝它堆区里面的地址。而且,它对可变与不可变类型不区分。
list1 = [111, 222, ['p', 'o']]
list2 = list1.copy()
print(list1)
print(list2)
print(id(list[0]),id(list[1]),id(list1[2]))
print(id(list2[0]),id(list2[1]),id(list2[2]))
# 以下是输出结果:
# [111, 222, ['p', 'o']]
# [111, 222, ['p', 'o']]
# 140709005488360 140709005491912 2033668031616
# 140709005488360 140709005491912 2033668031616
2.深拷贝
深拷贝:对栈区和堆区的内容都进行拷贝;言外之意就是,它的值和它的地址都进行拷贝。
但是它对可变与不可变进行区分,可变会改变之前的地址,不可变不会改变之前的地址。
import copy
list1 = [111, 222, ['p', 'o']]
list2 = copy.deepcopy(list1)
print(list1)
print(list2)
print(id(list1[0]),id(list1[1]),id(list1[2]))
print(id(list2[0]),id(list2[1]),id(list2[2]))
# 以下是输出结果:
# [111, 222, ['p', 'o']]
# [111, 222, ['p', 'o']]
# 140709005488360 140709005491912 3068320897280
# 140709005488360 140709005491912 3068320899136