| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python篇 深拷贝与浅拷贝 -> 正文阅读 |
|
[Python知识库]python篇 深拷贝与浅拷贝 |
1.拷贝概念
百般口舌不如一证,下面举些小例子用以说明,如果基础较差的读者可以按情况点击下面链接查看笔记。 1.2 相关知识点python篇 “is"和”==" 2.浅拷贝概念
3.浅拷贝演示对于列表的拷贝我们可以使用列表内置的copy方法,当然也可以使用copy模块的copy方法,都会讲到。废话不说了,开搞。
列表中的copy方法是浅拷贝,我们定义了ls1变量并赋值了一个列表对象,接着又把对象拷贝给了ls2,可以用内置方法id()查看拷贝后类ls1、ls2的内存地址,当然结果大家也应该知道浅拷贝是能拷贝对象第一层的,而非只是引用,所以内存地址必然不同。
故而在改变其中一个的值时另一个的值也不会改变
但若是为需要拷贝的内容加上子对象呢?已经讲过子对象无法被浅拷贝所拷贝,这里我们就为ls1重新赋值加上一个列表子对象,再将其拷贝。
如上面代码所示,第一层对象的拷贝是成功了的,但子对象…
就只是简单引用了,既然是引用的是同一个内存数据,那么我改变其中一个,另一个自然也要改变。
为了方便拷贝,python中提供了对象拷贝模块,copy模块
在copy模块下亦有一个copy方法(copy.copy)与列表自带的copy方法功能相同,也是浅拷贝,就不多加赘述了,只是提一下,因为深拷贝要用到
4.深拷贝概念
5.深拷贝演示我们已经了解了深拷贝的概念,现在具体使用,为了方便使用,我们这里也使用copy模块进行拷贝,而深拷贝的底层逻辑,是使用的递归原理完成拷贝,如果对递归概念不太了解可以点击下面的链接。 下面介绍copy模块中另一个“copy”方法,也就是深拷贝方法:
同样用全局函数id查看其子对象内存地址,可知其子对象内存地址值不同,已完成拷贝,而非简单引用。
理所应该的改变其中一个的子对象,另一个不会发生改变。
下面做个小总:
出道题感兴趣的可以下去尝试: 元组中的元素是可变的,浅拷贝和深拷贝会发生啥?
答曰:会全数复制一份其不可变对象 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 4:24:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |