python中的几种copy用法_Python3中copy模块常用功能及其他几种copy方式比较
1、简单的共享引用:
python中内置有小整数常量池和字符串常量池,在某个范围内的相同的数字或字符串分别赋给不同的变量,这些不同的变量都是指向同一块内存地址,这就是所谓的共享引用,举几个简单的例子:
字符串的共享引用
数字的共享引用
单纯的变量的传递其实也是一种共享引用:
a,b指向同一个内存地址,任何一方将地址指向的内容做出改变,另外一方会受到影响
2、字典的copy()方法
字典的copy()方法相当于一种深复制,即将原本的字典dic1复制出一个内容一模一样的字典给另一个字典变量dic2,dic1和dic2的内容完全相同,但内存地址不同,不是共享引用,其中任何一方做出改变,另外一方不受影响,举个例子:
3、copy模块的两种copy方法:copy.copy()和copy.deepcopy()
首先导入copy模块,import copy
copy.copy()方法:复制模式跟copy()中参数的类型有关,只能copy最外层(有嵌套时),参数的类型包括可变类型和不可变类型
1、可变类型:当参数是可变类型时,该方法最外层执行的是深度复制,即复制前后的两个变量地址不同,如果原变量中嵌套有可变类型的元素,那么,内层进行的是浅复制,一方改变,另一方会受影响。(即两个变量地址不同,但指向同一块内存区域)
2、不可变类型:当copy()中的参数是不可变类型时,最外层执行浅复制(即两个变量地址相同且指向同一块内存区域),内层也执行浅复制
copy.deepcopy():不管参数是否为可变类型,递归地执行深度复制,如果变量中嵌套可变或不可变的变量,在复制时不管内层还是外层均执行深度复制(有一种情况除外),即另外开辟一块内存空间,把原变量所有的内容都复制一份过来,赋给新的变量,两变量虽然内容相同,但地址不同,且分别指向不同的区域,任意一方内容做出改变,另一方不会受到影响。
参数为可变类型
参数为不可变类型
注意:
在使用copy.deepcopy()方法时,如果参数为不可变类型,且里面嵌套的对象也是不可变类型,则此方法复制的结果为浅复制(即地址相同)。
python中的几种copy用法_Python3中copy模块常用功能及其他几种copy方式比较相关推荐
- python中tile的用法_python3中numpy函数tile的用法详解
tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...
- python中内置函数的用法_python中str内置函数用法总结
大家在使用python的过程中,应该在敲代码的时候经常遇到str内置函数,为了防止大家搞混,本文整理归纳了str内置函数.1字符串查找类:find.index:2.字符串判断类:islower.isa ...
- oracle中SQL语句ge的用法,Oracle中SQL语句的几种用法
在诊断数据库系统性能的过程中,总会涉及到跟踪效率低下的SQL语句,Oracle数据库10g包含一种新的实用程序trcsess,它可以让您基于会话ID或模块名称之类的条件,有选择地从大量跟踪文件中抽取出 ...
- python中sorted函数的用法_Python3 中sorted() 函数的用法
描述 sorted() 函数对所有可迭代的对象进行排序操作. 语法 sorted(iterable, key=None, reverse=False) iterable – 可迭代对象. key – ...
- python中search用法_Python3中正则模块re.compile、re.match及re.search函数用法详解
本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...
- python中encode用法_python3中encode和decode的一些基本用法
python3中encode和decode跟python2还是有一定的区别的,在python3中: encode(编码):按照某种规则将"文本"转换为"字节流" ...
- python中rstrip用法_Python3中strip()、lstrip()、rstrip()用法介绍
前言 Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符 ...
- python sum函数用法_python3中sum函数大全
一: python3中内置的sum函数用法: sum(iterable, start) iterable:可迭代对象(如列表,元组,集合) start:指定相加的参数,如果没有设置这个值,默认为0 返 ...
- python中main的含义及用法_python中main函数的用法
Python Python开发 Python语言 python中main函数的用法 什么场景下会有main函数? 当该python脚本被作为模块(module)引入(import)时,其中的main( ...
最新文章
- 【干货】史上最全的Tensorflow学习资源汇总,速藏!
- Jmeter拓展插件(jmeter-plugins)
- java 常量折叠_V8 使用“常量折叠”优化技巧,导致幂(**)运算有时候不等于 Math.pow()...
- zookeeper初探二 windows环境搭建伪集群
- 自已做的第一个autoconf程序(不断完善中)
- Neo4j:特定关系与一般关系+属性
- [Educational Round 5][Codeforces 616F. Expensive Strings]
- python调用pipe_Python multiprocessing模块中的Pipe管道使用实例
- mysql 主从数据库配置_8、MySQL主从数据库配置
- C# MD5算法实现对文件校验
- iPhone6爆炸真是小概率事件吗?
- 服务器系统2008r2网卡驱动,防吞Win 7/xp/10/server2008 r2网络驱动(网卡驱动)
- 3DMax 安装 超图 插件
- 西部数码虚拟服务器备案,关于西部数码主机启用备案码进行备案的通知
- 微信 h5(公众号)简单登录
- 金之塔用 Python 获取日内分时均价,每分钟日成交量和每时刻结算价,及交叉作用曲线延伸
- keil5中输入中文并且美化字体
- 6.lambda表达式
- 数据结构:单链表——带头结点与不带头结点步骤详解
- 【我参加NVIDIA Sky Hackathon】CV篇