GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing mofanpy.com — 复制的"玄学" | 莫烦Python 复制的"玄学" 作者: 莫烦 编辑: 莫烦 发布于: 2021-06-05 为什么说复制是玄学呢?其实如果你是编程小白,在学习 Python 或者任何语言的时候, 都会遇到这个问题,我既然是复制了一个复制品,为什么我改动这个复制品,原物也会发生改变呢? 如果我没有对内存机制的一个理解,这件事情对于我就是一门 好在我今天就帮对程序中的复制还不太清楚的同学们,解释一下你在复制时,究竟复制的是什么? 注:不同的语言中,对复制有着不同的定义,但是都离不开复制地址和复制值这两种说法。我们下面就来具体说明吧。 我的确复制了呀¶先看看下面这种复制,为了验证我的确是复制了,我们使用列表的复制功能, 先复制一份列表 从结果看出,我们的确复制了列表里所有的值,对复制后的列表的修改,没有影响到源列表。但其他时候也一样么? 其实你就搞了个隐分身¶下面我们在用列表把列表里再放一个列表, 当你运行后,你会发现,源列表居然变了!不明真相的我认为这是玄学! 明明都复制了,为什么还会关联到源列表?难不成我用的是量子计算机,有量子纠缠?? 我们再来看看另外一种情况,我把类别的实例存放到 明明源列表是 深拷贝与浅拷贝¶说英文可能会更加好理解一点,深拷贝是 Deep Copy,浅拷贝是 Shallow Copy。 Deep copy 就是我们通常意义上的复制,把东西全部 那么在上面的案例中,比如列表中的列表,列表中的 Class 实例,其实都是复制了他们的投影,没有动到真身。 想要让投影改变,那就必须动到真身。所以在修改 但为什么复制数值的时候,源列表中的数值没有改变呢?难道数值没有真身? 这可能就有点玄学了,哈哈。Python 他在创造之初,就有这么个约定,列表中直接存放的数值,字符,和存 class 实例,列表,字典不同。 对数值字符的复制,直接是复制的值,而不是一个投影。 那么问题来了,如果我想做对存放实例的列表做 Deep Copy 深拷贝的时候咋办? Python 自带了一个 copy 的库,里面就有一个 总结¶这就是 Python 比较玄学的地方。之后我们学习到 Python 科学计算库 Numpy 的时候,这种类似的 而且我们我们也会讲,浅复制的优势就是快。复制是需要内存和时间的,因为浅复制没有真正复制,所以并不需要耗多少内存和时间, 所以浅复制也是有优势的,一个字 交互式学Python
介绍
基础功能
循环、数据、判断
函数、类、模块
文件管理
异常检查和处理 |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |