【Python基础】之深浅拷贝

本文介绍了Python中的深浅拷贝概念。通过`id()`函数展示了对象在内存中的地址,强调对于基本类型如str、int,拷贝时新变量与原变量共享地址。对于复杂类型,浅拷贝只复制第一层,而深拷贝则递归复制所有层级。通过实例和图解清晰地阐述了深浅拷贝的区别。
摘要由CSDN通过智能技术生成

1.首先介绍一个python的内置函数id()

  • id()可以查看传入对象在内存中的地址。
  • 在python中,对一些常用的数字或字符串,虽然变量名不同,但是为了节省内存,通常会共享同一个地址,如下代码示例:
# 变量a、b共用内存地址
a = 257
b = 257
print(id(a))#输出:1950671417040
print(id(b))#输出:1950671417040

2.拷贝:

  • 当我们对变量a进行拷贝的时候,意味着在内存中开辟一块新的地址存放变量a的值。
  • 对于str,int型的数据,无论深浅拷贝,返回的新变量都只是原变量的一个引用,而不会在内存中开辟新的地址。
  • 对于其他类型的数据,浅拷贝指只对第一层的元素开辟新的地址,即数据的父亲层,对内层(子孙辈的层)还使用原来的地址。
  • 深拷贝指除了最内存的元素使用原来的地址,其他层均在内存中开辟新的地址。

3.举例说明:

  • str,int型数据: str型就不再举例,可见无论深浅拷贝,a,b,c都共享内存地址。
import copy
a = 123
#浅拷贝
b = copy.copy(a)
#深拷贝
c = copy.deepcopy(a)
print(id(a))# 输出:1543671728
print(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值