Python学习之路——基础2(含深浅拷贝)
逻辑运算符:not and or
等同于c/c++中的 !、&&、||,除了写法上的不同,实际原理是一样的。
运算也遵循短路原则。由于Python本身不支持++/--操作符,所以避免了类似于c/c++中不慎在&&和||后的表达式中加入++/--运算符,而实际程序运行却产生超出预期的效果,满屏查错却迟迟无法解决。
条件1 or 条件2 #条件1为真时,不判断条件2
条件3 and 条件4 #条件3为假时,不判断条件4
字符格式化输出 %s %d %f
深浅拷贝
浅拷贝 最简单的记忆方法就是,只拷贝最外层的容器。
深拷贝 就是拷贝出一份副本。
对序列执行切片操作时,返回的切片都是副本。但是浅拷贝。
import copy
names = [1, 2, 3, [5, 6]]
n = names
m = names[:] # slicing
k = copy.copy(names) # shallow copy
# k2 = names.copy()
j = copy.deepcopy(names) # deep copy
print(n is names, n == names)
print(m is names, m == names)
print(j is names, j == names)
print(k is names, k == names)
print(j is m, m is k, j is k)
print(j == m, m == k, j == k)
names[3][0] = 7
print(k, j)
print(id(names), id(n), id(m), id(k))
for a in names:
print(id(a))
for a in k:
print(id(a))

相关文章移步这里吧:Python的深拷贝与浅拷贝
之前有困惑:既然copy()是浅拷贝,k当中存储的内存地址和names所存储的内存地址相同,为什么k is names返回了False呢?
因为k是创建的新的对象,在内存中开辟出一块内存用来存储与names相同的内存地址,这块内存的地址和names并不一样,所以k is names返回了False。
只有在两个变量指向同一个内存地址时,这两者使用is关键字才会返回True,这时其中一个变量名其实只是给之前开辟出的内存块地址起了别名而已。
Python学习之路——基础2(含深浅拷贝)的更多相关文章
- python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充
本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...
- python学习笔记:第7天 深浅拷贝
目录 1. 基础数据类型补充 2. set集合 3. 深浅拷贝 1. 基础数据类型补充 (1)join方法 join方法是把一个列表中的数据进行拼接,拼接成字符串(与split方法相反,split方法 ...
- Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy
1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...
- python学习之路基础篇(第五篇)
前四天课程回顾 1.python简介 2.python基本数据类型 类: int:整型 | str:字符串 | list:列表 |tuple:元组 |dict:字典 | set:集合 对象: li = ...
- python学习之路基础篇(第四篇)
一.课程内容回顾 1.python基础 2.基本数据类型 (str|list|dict|tuple) 3.将字符串“老男人”转换成utf-8 s = "老男人" ret = by ...
- Python学习之路——基础1
python作为一门解释型的编程语言,和c/c++等其他语言都或多或少有相通的地方,所以有语言基础的话,学起来还是方便一些.所以我的笔记对于相对简单的概念可能会选择放过,但对自己记录的东西我会力求完备 ...
- python学习之路基础篇(第八篇)
一.作业(对象的封装) 要点分析 1.封装,对象中嵌套对象 2.pickle,load,切记,一定要先导入相关的类二.上节内容回顾和补充 面向对象基本知识: 1.类和对象的关系 2.三大特性: 封装 ...
- python学习之路基础篇(第七篇)
一.模块 configparser configparser用于处理特定格式的文件,其本质是利用open来对文件进行操作 [section1] # 节点 k1 = v1 # 值 k2:v2 # 值 [ ...
- python学习之路基础篇(三)
博客参考:http://www.cnblogs.com/wupeiqi/articles/4943406.html http://www.cnblogs.com/luotianshuai/p/4949 ...
随机推荐
- BNU27935——我爱背单词——————【数组模拟】
我爱背单词 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class name: ...
- Linux VFS机制简析(二)
Linux VFS机制简析(二) 接上一篇Linux VFS机制简析(一),本篇继续介绍有关Address space和address operations.file和file operations. ...
- oracle 报错:ORA-02019 未找到数据库的连接说明
一.问题描述 我之前连的是别的数据库,现在更换了数据库的连接,然后就报了如下的错误: 我使用的是NHibernate,我找到映射文件后发现我用了dblink,代码中table="COM_OR ...
- SQL:Example Uses of the SUBSTRING String Function
---Example Uses of the SUBSTRING String Function --http://www.sql-server-helper.com/tips/tip-of-the- ...
- Node 的fs模块
这个fs.readdir路径要加上__dirname 找到绝对路径 否则会报错 { Error: ENOENT: no such file or directory, scandir '/User ...
- css 条纹背景
先介绍文章用到的二个知识点 background-size 属性 语法 background-size: length|percentage|cover|contain; css线性渐变 linear ...
- 在C#中生成GUID的方法
var guid = Guid.NewGuid();Debug.WriteLine(guid.ToString()); //1f3c6041-c68f-4ab3-ae19-f66f541e3209 ...
- 【阿里云产品公测】服务器测性能,PTS多快好省
作者:阿里云用户goldsix PTS(性能测试服务)的官方定位是:集测试机管理.测试脚本管理.测试场景管理.测试任务管理.测试结果管理为一体的性能云测试平台. 不管定义是否高大上,一般用户尤其是我 ...
- 使用notebook 笔记(1)
1 去开启远程访问notebook 注意事项 安装好Ipython notebook 之后, 开启服务的方式如下: ipython notebook --profile=nbserver --ip= ...
- java 实现二叉树结构基本运算详细代码
static final int MAXLEN = 20; //最大长度 class CBTType //定义二叉树节点类型 { String data; //元素数据 CBTType left; / ...