Python变量赋值,浅拷贝和深拷贝

目录

1、变量赋值

 2、浅拷贝

 3、深拷贝


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)

 输出结果

 

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值