python深浅拷贝_python深浅拷贝

本文介绍了Python中浅拷贝与深拷贝的区别,包括它们如何处理可变对象和不可变对象,并通过实例展示了两种拷贝方式对内存的影响。

int, float,str, tuple都是不可变对象,

dic,set,list属于可变对象。可变,是指内存中的值,不是指地址。

1 浅拷贝

拷贝规则:

如果被拷贝对象是不可变对象,则不会生成新的对象

如果被拷贝对象是可变对象,则会生成新的对象,但是只会对可变对象最外层进行拷贝

import copy

a = 4343.23

b = copy.copy(a)

print(id(a))

print(id(b))

上面的代码对一个float类型的数据进行了浅拷贝,根据规则,不会生成新的对象,因此a,b两个变量的内存地址是相同的。

下面是一个可变对象的拷贝示例

import copy

a = [1, [1]]

b = copy.copy(a)

print(id(a), id(b))

print(id(a[1]), id(b[1]))

程序输出结果是

4739120648 4387519880

4739160904 4739160904

a和b的内存地址是不相同的,说明生成了一个新的数据,但由于是浅拷贝,因此列表里的元素并不进行拷贝,只对最外层进行了拷贝。

通过对内存的观察,我们可以更清楚了解浅拷贝的过程,下图是浅拷贝之前的内存示意图

浅拷贝发生之后,内存变成如下图所示

为了便于识别,我特地将代表引用的线条加粗并加上颜色来区分,通过对比浅拷贝前后的示意图,你可以看到,仅仅生成了一个新的对象,地址是4350709128。

a[1], b[1] 的数据类型是列表,是可变对象,他们的内存地址相同,因此,对b[1]的操作,将会影响到a[1]

import copy

a = [1, [1]]

b = copy.copy(a)

b[1].append(2)

print(a)

程序输出结果

[1, [1, 2]]

明明只是对变量b进行了操作,却影响到了a,这绝对是个安全隐患,因此进行浅拷贝时要非常小心,除非你清楚的知道自己在做什么,可能带来哪些影响,否则就不要进行浅拷贝,现在不缺内存,别玩火。

2. 深拷贝

拷贝规则:

如果被拷贝对象是不可变对象,深拷贝不会生成新对象,因为被拷贝对象是不可变的,继续用原来的那个,不会产生什么坏的影响

如果被拷贝对象是可变对象,那么会彻底的创建出一个和被拷贝对象一模一样的新对象

import copy

a = [1, [1]]

b = copy.deepcopy(a)

print(id(a), id(b))

print(id(a[1]), id(b[1]))

程序输出结果

4739124744 4350819720

4739165000 4739236104

为了清晰的理解深拷贝的作用,还是放上拷贝前后的内存对比图

深拷贝前

深拷贝之后

和浅拷贝相比,最大的不同在于,新生成了一个列表[1],内存地址和a[1]不一样,深拷贝之后,对b的任何操作,都不会影响到a,虽然多耗费了一些内存,但是更加安全。

内容概要:本文为《科技类企业品牌传播白皮书》,系统阐述了新闻媒体发稿、自媒体博主种草与短视频矩阵覆盖三大核心传播策略,并结合“传声港”平台的AI工具与资源整合能力,提出适配科技企业的品牌传播解决方案。文章深入分析科技企业传播的特殊性,包括受众圈层化、技术复杂性与传播通俗性的矛盾、产品生命周期影响及2024-2025年传播新趋势,强调从“技术输出”向“价值引领”的战略升级。针对三种传播方式,分别从适用场景、操作流程、效果评估、成本效益、风险防控等方面提供详尽指南,并通过平台AI能力实现资源智能匹配、内容精准投放与全链路效果追踪,最终构建“信任—种草—曝光”三位一体的传播闭环。; 适合人群:科技类企业品牌与市场负责人、公关传播从业者、数字营销管理者及初创科技公司创始人;具备一定品牌传播基础,关注效果可量化与AI工具赋能的专业人士。; 使用场景及目标:①制定科技产品全生命周期的品牌传播策略;②优化媒体发稿、KOL合作与短视频运营的资源配置与ROI;③借助AI平台实现传播内容的精准触达、效果监测与风险控制;④提升品牌在技术可信度、用户信任与市场影响力方面的综合竞争力。; 阅读建议:建议结合传声港平台的实际工具模块(如AI选媒、达人匹配、数据驾驶舱)进行对照阅读,重点关注各阶段的标准化流程与数据指标基准,将理论策略与平台实操深度融合,推动品牌传播从经验驱动转向数据与工具双驱动。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值