番外:深浅copy
进击のpython
*****
深浅copy
copy是什么意思?
复制 (又学一个单词!开不开森)
那啥叫复制呢?
百度百科上给的解释是:仿原样品制造
我们曾经有过这样的印象
a = "zhangsan"
b = a
a = "jack"
print(a, b) # jack zhangsan
这样就相当于用 b 复制了 一遍 a 对吧!
那你在网上down文章的时候,作者把文章删除了
你的电脑里就没了吗?
要是没了?那我存在硬盘里的女神学习资料岂不是保存不住了?
所以我用b复制一份之后,a就算变了。也跟我b没得关系
但是我们还发现过这样的情况
a = [1, 2, 3, [1, 2, 3]]
b = a
a[-1][1] = "jack"
print(a, b) # [1, 2, 3, [1, 'jack', 3]] [1, 2, 3, [1, 'jack', 3]]
不对啊!!!!!
这和刚开始说的不一样啊!!!!
a变了b怎么也变了???????

当我们操作字符串的时候,就相当于在内存地址(黄色框)里开辟一个空间,里面存afwaf,并把它叫做 a
然后当 b=a 时看似是 红色的b指向a 实际上是 绿色的b指向afwaf
然后当 a = af 的时候,又开辟一个空间,里面存 af 并把它叫做 a
不能有两个一样的变量名(讲变量的时候讲过了)
所以 a 指向 afwaf 的红色线就断了
所以现在
a 就是 af b就是 afwaf
而当我们操作可变的数据类型,比如列表,字典等,就是这样的

当我对列表进行修改的时候,就不再开辟新的内存空间
而是!共!享!内!存!空!间!
这样,a 和 b 就是始终相等的
给你一张偷来的图
可以看到 copy 的 只是第一层的内存地址,但是第二层,还是共享内存空间的!
所以,只改变第一层,就不会共享,各改各的
但是改到第二层,就会共享,你动我也动!
深copy 就一句话
你动你的,跟我没关系
所以我下载的女神学习资料用的就是深copy这个形式
*有点别扭*
*多做习题*
番外:深浅copy的更多相关文章
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- 可视化(番外篇)——SWT总结
本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...
- [置顶] think in java interview番外篇-谈程序员如何修练英语
一.程序员对英语能力的重视度和能力要求应该是在各行各业中排在比较靠前的 这样说吧,英语程度的好坏直接影响着一个程序员的编程.开发.创新能力. 道理很简单: 1. 计算机和软件是用英语创造出来的 2. ...
- Python 基础之函数、深浅copy,set及练习
三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(not)的条件判断,在Python 2.4以上才有了三元操作. 语法格式: X if C else Y 有了三元表达式 ...
- silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发)
原文:silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发) 这篇介绍的是3D导航,点击图标,页面360°翻转的效果!有什么不足的欢迎大家指出来. 1.新建一个user ...
- 同步IO与一部IO、IO多路复用(番外篇)select、poll、epoll三者的区别;blocking和non-blocking的区别 synchronous IO和asynchronous IO的区别
Python之路,Day9 , IO多路复用(番外篇) 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权
iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...
- python基础3(元祖、字典、深浅copy、集合、文件处理)
本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...
随机推荐
- Python标准库(3.x): itertools库扫盲
itertools functions accumulate() compress() groupby() starmap() chain() count() islice() takewhile() ...
- C#程序以管理员的身份运行
在一些特定的情况下我们需要能够有管理员的权限,这样我们的很多执行,或者写入就不会报错了. 1.解决方案资源管理器---->项目(右键)--->属性-->安全性 2.勾选“启用Clic ...
- Redis实现Timeline
上回写了[使用Redis实现关注关系][1],这次说说使用Redis实现Timeline. Timeline的实现一般有推模式.拉模式.推拉结合这几种. 推模式:某人发布内容之后推送给所有粉丝,空间换 ...
- Advanced Installer 11.9基于IIS打包札记(For MySQL)
原文:Advanced Installer 11.9基于IIS打包札记(For MySQL) Mysql免安装前期部署 下载绿色命令行版本的mysql,将其放入到发布的程序发布包内,执行Update批 ...
- JS浏览器滚轮事件实现横向滚动照片展
if(window.attachEvent){ ///*IE8注册事件*/ this.oc.attachEvent('onmousewheel',function(e) { //函数体 }); } e ...
- layer 1.9.2 发布,国产 Web 弹层不懈的前行者
快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...
- 基于Delphi实现客户端服务端通信Demo
在开始之前我们需要了解下这个Demo功能是啥 我们可以看到这是两个小project,左边的project有服务端和客户端1,右边的project只有一个客户端2 效果就是当两个客户端各自分别输入正确的 ...
- UILabel范例实现代码如下
#import "TWO_ViewController.h" #define SCREEN_Width [[UIScreen mainScreen] bounds].siz ...
- 附005.Kubernetes身份认证
一 Kubernetes访问 1.1 Kubernetes交互 与Kubernetes交互通常有kubectl.客户端(Dashboard).REST API请求. 1.2 API访问流程 用户使用k ...
- centos7PXE和cobbler自动部署装机
安装程序启动过程MBR:isolinux/boot.catstage2: isolinux/isolinux.bin配置文件:isolinux/isolinux.cfg 每个对应的菜单选项: 加 ...