最近在看《SmoothPython》这本书,想把我的阅读笔记分享给大家,希望能帮助到有兴趣的朋友在这本书中,但没有时间阅读它。(文中大部分文字和图片摘自《SmoothPython》一书和python官网)章节概述:介绍对象相关概念和垃圾回收机制章节结构:对象垃圾回收具体内容:对象1.What是一个变量?变量是附加到对象的标签。比如定义一个变量v=a,其实就是把v赋值给了对象a,因为右边先执行,然后创建了a。2.什么是别名?别名是绑定到同一对象的两个变量。==和is的区别在于==比较的是值,而is比较的是表示,所以在一个对象中标记的两个变量可以为真,但是==只要是标记的对象,如果值相等就返回真或一个对象。3.什么是对象的身份?对象一旦被创建,就会产生一个永久标识,可以理解为内存地址,是一个比较标识,id()返回一个标识整数表示。4、元组的不变性是指元素的同一性,因为元组持有对一系列对象的引用,但如果元素本身是可变的,则元素的值可以改变,但同一性不变。5、浅拷贝和深拷贝:浅赋值是共享对象,深拷贝是创建另一个对象,拷贝内容。垃圾回收1.Python的对象处理机制:对象永远不会自行销毁,但是在无法获取时可能会被当作垃圾回收处理。2、del语句删除的是名字,不是对象。del命令可能会导致对象被垃圾回收,但仅限于被删除的变量持有该对象的最后一个引用时,或者无法获取该对象时。3、垃圾回收机制的主要算法:引用计数。当引用计数归零时,对象立即被销毁4、弱引用:弱引用不会增加对性的引用次数,引用的目标对象称为referent。使用方法5时调用weakref.ref()。WeakValueDictionary实现了一个可变映射,里面的值是对象的弱引用,被引用的对象在程序的其他地方被垃圾回收,相应的key会自动从弱值字典。所以WeakValueDictionary常用于缓存。
