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方式比较相关推荐

  1. python中tile的用法_python3中numpy函数tile的用法详解

    tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...

  2. python中内置函数的用法_python中str内置函数用法总结

    大家在使用python的过程中,应该在敲代码的时候经常遇到str内置函数,为了防止大家搞混,本文整理归纳了str内置函数.1字符串查找类:find.index:2.字符串判断类:islower.isa ...

  3. oracle中SQL语句ge的用法,Oracle中SQL语句的几种用法

    在诊断数据库系统性能的过程中,总会涉及到跟踪效率低下的SQL语句,Oracle数据库10g包含一种新的实用程序trcsess,它可以让您基于会话ID或模块名称之类的条件,有选择地从大量跟踪文件中抽取出 ...

  4. python中sorted函数的用法_Python3 中sorted() 函数的用法

    描述 sorted() 函数对所有可迭代的对象进行排序操作. 语法 sorted(iterable, key=None, reverse=False) iterable – 可迭代对象. key – ...

  5. python中search用法_Python3中正则模块re.compile、re.match及re.search函数用法详解

    本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...

  6. python中encode用法_python3中encode和decode的一些基本用法

    python3中encode和decode跟python2还是有一定的区别的,在python3中: encode(编码):按照某种规则将"文本"转换为"字节流" ...

  7. python中rstrip用法_Python3中strip()、lstrip()、rstrip()用法介绍

    前言 Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符 ...

  8. python sum函数用法_python3中sum函数大全

    一: python3中内置的sum函数用法: sum(iterable, start) iterable:可迭代对象(如列表,元组,集合) start:指定相加的参数,如果没有设置这个值,默认为0 返 ...

  9. python中main的含义及用法_python中main函数的用法

    Python Python开发 Python语言 python中main函数的用法 什么场景下会有main函数? 当该python脚本被作为模块(module)引入(import)时,其中的main( ...

最新文章

  1. 【干货】史上最全的Tensorflow学习资源汇总,速藏!
  2. Jmeter拓展插件(jmeter-plugins)
  3. java 常量折叠_V8 使用“常量折叠”优化技巧,导致幂(**)运算有时候不等于 Math.pow()...
  4. zookeeper初探二 windows环境搭建伪集群
  5. 自已做的第一个autoconf程序(不断完善中)
  6. Neo4j:特定关系与一般关系+属性
  7. [Educational Round 5][Codeforces 616F. Expensive Strings]
  8. python调用pipe_Python multiprocessing模块中的Pipe管道使用实例
  9. mysql 主从数据库配置_8、MySQL主从数据库配置
  10. C# MD5算法实现对文件校验
  11. iPhone6爆炸真是小概率事件吗?
  12. 服务器系统2008r2网卡驱动,防吞Win 7/xp/10/server2008 r2网络驱动(网卡驱动)
  13. 3DMax 安装 超图 插件
  14. 西部数码虚拟服务器备案,关于西部数码主机启用备案码进行备案的通知
  15. 微信 h5(公众号)简单登录
  16. 金之塔用 Python 获取日内分时均价,每分钟日成交量和每时刻结算价,及交叉作用曲线延伸
  17. keil5中输入中文并且美化字体
  18. 6.lambda表达式
  19. 数据结构:单链表——带头结点与不带头结点步骤详解
  20. 【我参加NVIDIA Sky Hackathon】CV篇

热门文章

  1. 关于VS2005中的Code Snippets Manager的问题及解决
  2. HyperLedger Fabric 交易流程
  3. Matlab概率统计编程指南
  4. springboot 使用webflux响应式开发教程(一)
  5. 持续集成之 Jenkins 钉钉通知(八)
  6. SQL SERVER数据库文件收缩
  7. MFC获得主窗体和父窗体指针
  8. 【AaronYang风格】第一篇 CodeFirst 初恋
  9. 文件管理的艺术之SVN从零搭建
  10. [转]默认构造函数的作用