python直接赋值、深浅拷贝实例剖析
根据数据类型分为两部分进行剖析:
- int、str类型
- list、tuple、dict类型等
1. int、str类型
【int类型实例】
>>> import copy # 导入copy模块
>>> a1=11
>>> a2=a1 # 直接赋值引用
>>> a3=copy.copy(a1) # 浅拷贝
>>> a4=copy.deepcopy(a1) # 深拷贝
>>> id(a1),id(a2),id(a3),id(a4)
>>> (1357559168, 1357559168,1357559168,1357559168) 【str类型实例】
>>> import copy # 导入copy模块
>>> b1='css'
>>> b2=b1 # 直接赋值引用
>>> b3=copy.copy(b1) # 浅拷贝
>>> b4=copy.deepcopy(b1) # 深拷贝
>>> id(b1), id(b2),id(b3),id(b4)
>>> (43826624,43826624,43826624,43826624)
由以上实例可得出:int和str类型,无论是直接赋值引用 or 深浅拷贝,均指向同一块内存空间,因此对于int和str类型的变量而言,三种方法作用相同
2. list、tuple、dict等类型(以list类型为例)
【示例】
>>> import copy # 导入copy模块
>>> L1=[11,22,33,['a','b','c']] # 定义list变量,其中L1[3]的值是一个子列表
>>> L2=L1 # 直接赋值引用
>>> L3=copy.copy(L1) # 浅拷贝
>>> L4=copy.deepcopy(L1) # 深拷贝
>>> id(L1),id(L2),id(L3),id(L4)
>>> (43777928,43777928,43776968,43795912)
>>> L1.append(44) # L1列表父对象添加元素
>>> L1[3].append('d') # L1列表子对象添加元素
>>> L1
>>> [11,22,33,['a','b','c','d'],44]
>>> L2
>>> [11,22,33,['a','b','c','d'],44]
>>> L3
>>> [11,22,33,['a','b','c','d']]
>>> L4
>>> [11,22,33,['a','b','c']]
以上示例说明:
1. 直接赋值即是对象的引用,指向同一内存地址
2. 浅拷贝:只拷贝一层,如上述示例,只拷贝父对象,不拷贝父对象内部的子对象(L3[3]仍指向原L1子对象的内存地址),故分别在L1父对象和子对象中添加元素44和'd', 对L3父对象无影响,只对其子对象有影响
3. 深拷贝:拷贝父对象及子对象
python直接赋值、深浅拷贝实例剖析的更多相关文章
- 天啦噜!仅仅5张图,彻底搞懂Python中的深浅拷贝
Python中的深浅拷贝 在讲深浅拷贝之前,我们先重温一下 is 和==的区别. 在判断对象是否相等比较的时候我们可以用is 和 == is:比较两个对象的引用是否相同,即 它们的id 是否一样 == ...
- Python 中的深浅拷贝
Python 中的深浅拷贝 参考文献:https://blog.csdn.net/lnotime/article/details/81194633 参考文献:https://blog.csdn.net ...
- 第五篇python进阶之深浅拷贝
目录 第五篇python进阶之深浅拷贝 一.引言 1.1可变 和不可变 二.拷贝(只针对可变数据类型) 三.浅拷贝 四.深拷贝 第五篇python进阶之深浅拷贝 一.引言 1.1可变 和不可变 id不 ...
- python 赋值 深浅拷贝
深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 impor ...
- 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)
深浅拷贝 有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象.这就是Python的copy所发挥作用的地方. 定义了当对你的类的实例调用copy.c ...
- Python中的深浅拷贝
1.什么是深浅拷贝? python中一切皆对象,python中的数字.字符串.元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的 ...
- python基础(6)-深浅拷贝
赋值 字符串和数字 # id()函数可以获取变量在内存中的地址标识 num1 = 2; num2 = 2; print(id(num1)) # result:8791124202560 print(i ...
- Python基础【3】:Python中的深浅拷贝解析
深浅拷贝 在研究Python的深浅拷贝区别前需要先弄清楚以下的一些基础概念: 变量--引用--对象(可变对象,不可变对象) 切片(序列化对象)--拷贝(深拷贝,浅拷贝) 我是铺垫~ 一.[变量--引用 ...
- 挖一挖python中的深浅拷贝问题
前几天在做面试题的时候,遇到一个与Python深浅拷贝的问题,今天总结出来一个方法,能够快速判断在对一个对象复制后,新对象与原来对象是否会互相影响的方法. 先抛出结论,然后我们对结论进行验证~~~ 先 ...
随机推荐
- set+线段树 Codeforces Round #305 (Div. 2) D. Mike and Feet
题目传送门 /* 题意:对于长度为x的子序列,每个序列存放为最小值,输出长度为x的子序列的最大值 set+线段树:线段树每个结点存放长度为rt的最大值,更新:先升序排序,逐个添加到set中 查找左右相 ...
- 1051 - Good or Bad DFS 记忆化搜索
http://lightoj.com/volume_showproblem.php?problem=1051 对于每个位置,设dfs(cur, one, two)表示前i个字母,拥有辅音字母one个, ...
- php的iconv函数中utf8与utf-8的差异
开发中遇到一个奇怪的问题:报错如下: iconv() [<a href='function.iconv'>function.iconv</a>] : Wrong charset ...
- 【前端】Html5浏览器缓存 sessionStorage 与 localStorage
一.sessionStorage: 浏览关闭会话结束就被清除:(不能跨页面) localStorage:永久保存: 二.使用 var storage = window.sessionStorage; ...
- 洛谷P2762 太空飞行计划问题(最大权闭合图)
题意 有$m$个实验,$n$中器材,每个实验需要使用一些器材 每个实验有收入,每个器材有花费 最大化收入 - 花费 Sol 最大权闭合图的经典应用 从$S$向每个实验连流量为该实验收入的边 从每个器材 ...
- 搭建SSM框架(聚合项目)
parents 父工程 pom base用户权限 jar wms业务 jar app帮助管理 war1. parents的pom.xml文件 1.1 maven servlet3.1.0 1.2 ...
- Really simple SSH proxy (SOCKS5)
原文: https://thomashunter.name/blog/really-simple-ssh-proxy-socks5/ SOCKS5 is a simple, eloquent meth ...
- 程序员必须知道FTP命令
程序员必须知道FTP命令 文件传输软件的使用格式为:FTP<FTP地址>,若连 接成功,系统将提示用户输入 ...
- 算法之A星算法(寻路)
1.启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标.这样可以省略大量无谓的搜索路径,提高了效率.在启发式搜索中,对位置的估价是十分 ...
- 51nod 1432 独木舟
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 n个人,已知每个人体重.独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承 ...