目录
1、变量赋值
变量赋值只是将新变量指向了旧变量指向的地址
# 变量赋值、浅拷贝和深拷贝
class MobilePhone:
def __init__(self, name):
self.name = name
phone1 = MobilePhone("小米手机")
phone2 = phone1
print(phone1)
print(phone2)
结果如下
2、浅拷贝
浅拷贝是将旧变量自身复制给新变量一份,旧变量的自变量和新变量共有
# 变量赋值、浅拷贝和深拷贝
import copy
class MobilePhone:
def __init__(self, name):
self.name = name
# 浅拷贝
print("浅拷贝:")
huawei = MobilePhone("mate50")
iphone = MobilePhone("iphone14")
phones = [huawei, iphone]
phones_copy = copy.copy(phones)
print(id(phones))
print(phones)
print(id(phones_copy))
print(phones_copy)
执行结果
可以看出,浅拷贝得到的新变量指向堆内存当中的另一块内存,但是子变量却指向旧子变量
3、深拷贝
深拷贝则是递归提取原变量内的信息,赋值给新的变量,二者没有共享内存
# 变量赋值、浅拷贝和深拷贝
import copy
class MobilePhone:
def __init__(self, name):
self.name = name
# 深拷贝
print("深拷贝:")
huawei = MobilePhone("mate50")
iphone = MobilePhone("iphone14")
phones = [huawei, iphone]
phones_copy = copy.deepcopy(phones)
print(id(phones))
print(phones)
print(id(phones_copy))
print(phones_copy)
输出结果