流畅的python第八章对象引用,可变性和垃圾回收
变量不是盒子

在==和is之间选择
==比较两个对象的值,而is比较对象的标识

元组的相对不可变姓
元组与多数的python集合(列表,字典,集,等等)一样,保存的是对象的引用。如果引用的元素是可变的,即便元组本身不可变,元素依然可变。元组的不可变姓其实是值tuple数据结构的物理内容(保存的引用)不可变,与引用对象无关。

默认做浅复制
使用构造函数和[:]做的都是浅复制




为任意对象做深复制和浅复制
copy模块提供的deepcopy和copy函数能为任意对象做深复制和浅复制




函数的参数作为引用时


整数和元组的+=重新创建一个新的值,而列表是就地添加,没有创建新的列表
不要使用可变类型作为参数的默认值



防御可变参数
如果定义的函数接受可变参数,应该谨慎考虑调用方是否期望修改传入的参数


在使用可变参数时,如果直接赋值,那么任何一方修改了,另一方都会受到印象,因为是同一个对象,如果用构造函数创建新的值则不受影响。
del和垃圾回收
del语句删除名称,而不是对象,del命令可能会导致对象被当做垃圾回收,但是仅当删除的变量保存的是对象的最后一个引用,或者无法得到对象时。重新绑定也可能会导致对象的引用数量归零,导致对象被销毁。


弱引用

WeakValueDictionary简介


python对不可变类型实加的把戏
对于不可变类型,其浅复制和深复制都是复制其的引用

流畅的python第八章对象引用,可变性和垃圾回收的更多相关文章
- 流畅的python 对象引用 可变性和垃圾回收
		对象引用.可变性和垃圾回收 变量不是盒子 人们经常使用“变量是盒子”这样的比喻,但是这有碍于理解面向对象语言中的引用式变量.Python 变量类似于 Java 中的引用式变量,因此最好把它们理解为附加 ... 
- 基于Python对象引用、可变性和垃圾回收详解
		基于Python对象引用.可变性和垃圾回收详解 下面小编就为大家带来一篇基于Python对象引用.可变性和垃圾回收详解.小编觉得挺不错的,现在就分享给大家,也给大家做个参考. 变量不是盒子 在示例所示 ... 
- Fluent_Python_Part4面向对象,08-ob-ref,对象引用、可变性和垃圾回收
		第四部分第8章,对象引用.可变性和垃圾回收 1. 创建对象之后才会把变量分配给对象 变量是对象的标注,是对象的别名,是对象的引用,并不是对象存储的地方. 例子1. 证明赋值语句的右边先执行 class ... 
- PythonI/O进阶学习笔记_6.对象引用,可变性和垃圾回收
		前言: 没有前言了- -......这系列是整理的以前的笔记上传的,有些我自己都忘记我当时记笔记的关联关系了. 记住以后 笔记记了就是用来复习的!!!不看不就啥用没了吗!!! content: 1.p ... 
- gj7 对象引用、可变性和垃圾回收
		7.1 python变量到底是什么 #python和java中的变量本质不一样,python的变量实质上是一个指针 int str, 便利贴 a = 1 a = "abc" #1. ... 
- Python基础部分:7、 垃圾回收机制和流程控制
		目录 一.垃圾回收机制 1.引用计数 2.标记清除 3.分类代收 二.流程控制 1.理论 2.必备知识 3.分支结构 4.循环结构 一.垃圾回收机制 垃圾回收机制,简称GC,是python解释器自带的 ... 
- Python 对象引用、可变性和垃圾回收
		p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 25.0px Helvetica } 变量不是盒子 在示例所示的交互式控制台中,无法使用"变量是盒 ... 
- Python进阶:set和dict/对象引用、可变性和垃圾回收/元类编程/迭代器和生成器
		frozenset:不可变集合,无序,不重复 dict上的特性: 1. dict的key或者set的值 都必须是可以hash的(不可变对象 都是可hash的, str, fronzenset, tup ... 
- Python对象的引用、可变性和垃圾回收
		1.标识.相等性和别名 别名的例子 >>> charles = {'name': 'Charles L. Dodgson', 'born': 1832} >>> l ... 
随机推荐
- HDU-5384
			Danganronpa Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ... 
- Maximum Subarray——经典
			Find the contiguous subarray within an array (containing at least one number) which has the largest ... 
- 原生DOM选择器querySelector和querySelectorAll
			在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ... 
- 【Mac电脑】Jenkins的安装
			1.JDK自己下载安装喽, 2.下载Jenkins 下载路径:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.121.1/jenki ... 
- JavaScript best practices JS最佳实践
			JavaScript best practices JS最佳实践 0 简介 最佳实践起初比较棘手,但最终会让你发现这是非常明智之举. 1.合理命名方法及变量名,简洁且可读 var someItem = ... 
- Linux rsync数据定时增量备份
			一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 系统一般默认已安装,安装方法: yum -y install rsync 2.添加配置文件 rsync没有 ... 
- MFC获取句柄
			CWnd *pWnd = GetDlgItem(ID_***); // 取得控件的指针 HWND hwnd = pWnd->GetSafeHwnd(); // 取得控件的句柄 
- 一个微服务+DDD(领域驱动设计)的代码结构示例
			前有幸拜读过诸多大神关于DDD的实现落地等文章,学习较多,受益匪浅,在此推荐 : https://www.cnblogs.com/hafiz/p/9388334.htmlhttps://blog.cs ... 
- Quartz.NET 3.0.7 + MySql 动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(四)
			把 HAProxy 用上了,终于不用担心某个节点挂了,还要去手动修改管理后台配置文件的api地址了. 在某网站下载了一个 window 可以用的版本 haproxy-1.7.8 不得不吐槽一下,作者要 ... 
- Xamarin Visual Studio不识别JDK路径
			Xamarin Visual Studio不识别JDK路径 错误信息:Cannot find adb.exe in specified SDK path.出现这种情况,是因为Visual Studio ... 
