文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python深浅拷贝

2023-01-31 00:53

关注

深浅拷贝

深浅拷贝分为两部分,一部分是数字和字符串另一部分是列表、元组、字典等其他数据类型。

数字和字符串

对于数字字符串而言,赋值、浅拷贝和深拷贝无意义,因为他们的值永远都会指向同一个内存地址。

# 导入copy模块>>> import copy# 定义一个变量var1>>> var1 = 123
# 输出var1的内存地址>>> id(var1)1347747440>>> var2 = var1
# var2的内存地址和var1相同>>> id(var2)1347747440
# 浅拷贝>>> var3 = copy.copy(var1)
# var3的内存地址和var1相同>>> id(var3)1347747440
# 深拷贝>>> var4 = copy.deepcopy(var1)# var4的内存地址和var1相同>>> id(var4)1347747440

其他数据类型

对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

  • 创建一个字典var1

var1 = {"k1": "1", "k2": 2, "k3": ["abc", 456]}

赋值

赋值,只是创建一个变量,该变量指向原来内存地址,如:

>>> var1 = {"k1": "1", "k2": 2, "k3": ["abc", 456]}>>> var2 = var1>>> id(var1)1937003361288>>> id(var2)1937003361288

如图所示:

Python-Day04-01

浅拷贝

浅拷贝,在内存中只额外创建第一层数据

# 导入拷贝模块>>> import copy>>> var1 = {"k1": "1", "k2": 2, "k3": ["abc", 456]}
# 使用浅拷贝的方式>>> var2 = copy.copy(var1)
# 两个变量的内存地址是不一样的>>> id(var1)2084726354952>>> id(var2)2084730248008# 但是他们的元素内存地址是一样的>>> id(var1["k1"])2084726207464>>> id(var2["k1"])2084726207464

如图所示:

Python-Day04-02

深拷贝

深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

# 导入拷贝模块>>> import copy>>> var1 = {"k1": "1", "k2": 2, "k3": ["abc", 456]}
# 使用深拷贝的方式把var1的内容拷贝给var2>>> var2 = copy.deepcopy(var1)
# var1和var2的内存地址是不相同的>>> id(var1)1706383946760>>> id(var2)1706389852744
# var1和var2的元素"k3"内存地址是不相同的>>> id(var1["k3"])1706389853576>>> id(var2["k3"])1706389740744# var1和var2的"k3"元素的内存地址是相同的>>> id(var1["k3"][1])1706383265744>>> id(var2["k3"][1])1706383265744

如图所示:

Python-Day04-03


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯