浅拷贝

可变类型浅拷贝

copy函数是浅拷贝,只对可变类型的第一层对象进行拷贝,对拷贝的对象开辟新的内存空间进行存储,不会拷贝对象内部的子对象。

# 1. 普通赋值
# a = [1, 2, 3]
# b = [11, 22, 33]
# c = [a, b]
#
# d = c
#
# print(id(d)) # 1792345732160
# print(id(c)) # 1792345732160

# 2. 浅拷贝
import copy

# a = [1, 2, 3]
# b = [11, 22, 33]
# c = [a, b]
#
# d = copy.copy(c)
#
# print(id(d)) # 1244787255040
# print(id(c)) # 1244787298880

# 3. 浅拷贝的深层数据
a = [1, 2, 3]
b = [11, 22, 33]
c = [a, b]

d = copy.copy(c)

print(id(a)) # 2489468023808
print(id(c[0])) # 2489468023808
print(id(d[0])) # 2489468023808

不可变类型浅拷贝

不可变类型进行浅拷贝不会给拷贝对象开辟新的内存空间,而只是拷贝了这个对象的引用。

# 4. 浅拷贝不可变类型
a = (1, 2, 3)
b = (11, 22, 33)
c = (a, b)

d = copy.copy(c)
print(id(c)) # 2073041534336
print(id(d)) # 2073041534336