针对不可变对象
赋值操作、浅拷贝、深拷贝不会申请单独的内存空间,只会记录不可变对象的引用次数
Python中,对象的赋值都是进行对象引用(内存地址)传递
针对可变对象
赋值:是对象引用传递,原对象元素改变,拷贝对象元素改变。
copy.copy():浅拷贝,一层拷贝,会重新申请内存空间,拷贝对象的元素仍使用原对象元素的引用。
copy.deepcopy():深拷贝,完全拷贝,会重新申请内存空间,原对象元素的改变不影响拷贝对象元素。
import copy
s1 = [[1000, 200], ‘aliba‘]
s2 = s1.copy()
s1[1] = ‘alvin‘
print(s1)
print(s2) #s2不变
# [[1000, 200], ‘alvin‘]
# [[1000, 200], ‘aliba‘]
s1[0][0] = 1500
print(s1)
print(s2) #s2改变
# [[1500, 200], ‘alvin‘]
# [[1500, 200], ‘aliba‘]
s3 = copy.deepcopy(s1)
s3[1] = ‘alisa‘
s3[0][1] = 500
print(s1)
print(s2)
print(s3)
# [[1500, 200], ‘alvin‘]
# [[1500, 200], ‘aliba‘]
# [[1500, 500], ‘alisa‘]
原文:https://www.cnblogs.com/gugu-da/p/13021821.html