frozenset:不可变集合,无序,不重复 dict上的特性: 1. dict的key或者set的值 都必须是可以hash的(不可变对象 都是可hash的, str, fronzenset, tuple,自己实现的类 __hash__)2. dict的内存花销大,但是查询速度快, 自定义的对象 或者python内部的对象都是用dict包装的3. dict的存储顺序和元素添加顺序有关4. 添加数据有可能改变已有数据的顺序 is和==的区别:is是用来判断两个变量引用的对象是否为同一个,==用来判…
对象引用.可变性和垃圾回收 变量不是盒子 人们经常使用“变量是盒子”这样的比喻,但是这有碍于理解面向对象语言中的引用式变量.Python 变量类似于 Java 中的引用式变量,因此最好把它们理解为附加在对象上的标注. 在示例 8-1 所示的交互式控制台中,无法使用“变量是盒子”做解释.图8-1 说明了在 Python 中为什么不能使用盒子比喻,而便利贴则指出了变量的正确工作方式. 示例 8-1 变量 a 和 b 引用同一个列表,而不是那个列表的副本 >>> a = [1, 2, 3] &…
变量不是盒子 在==和is之间选择 ==比较两个对象的值,而is比较对象的标识 元组的相对不可变姓 元组与多数的python集合(列表,字典,集,等等)一样,保存的是对象的引用.如果引用的元素是可变的,即便元组本身不可变,元素依然可变.元组的不可变姓其实是值tuple数据结构的物理内容(保存的引用)不可变,与引用对象无关. 默认做浅复制 使用构造函数和[:]做的都是浅复制 为任意对象做深复制和浅复制 copy模块提供的deepcopy和copy函数能为任意对象做深复制和浅复制 函数的参数作为引用…
基于Python对象引用.可变性和垃圾回收详解 下面小编就为大家带来一篇基于Python对象引用.可变性和垃圾回收详解.小编觉得挺不错的,现在就分享给大家,也给大家做个参考. 变量不是盒子 在示例所示的交互式控制台中,无法使用"变量是盒子"做解释.图说明了在 Python 中为什么不能使用盒子比喻,而便利贴则指出了变量的正确工作方式. 变量 a 和 b 引用同一个列表,而不是那个列表的副本 >>> a = [1, 2, 3] >>> b = a &g…
第四部分第8章,对象引用.可变性和垃圾回收 1. 创建对象之后才会把变量分配给对象 变量是对象的标注,是对象的别名,是对象的引用,并不是对象存储的地方. 例子1. 证明赋值语句的右边先执行 class Gizmo(): def __init__(self): print('Gizmo id: %d' % id(self)) x = Gizmo() #这里表明,在尝试求积之前会创建一个新的Gizmo实例. y = Gizmo() * 10 print(dir()) 2. 标识(id()).相等性(…
系列文章 √第一章 元类编程,已完成 ; 本文目录 类是如何产生的如何使用type创建类理解什么是元类使用元类的意义元类实战:ORM . 类是如何产生的 类是如何产生?这个问题肯定很傻.实则不然,很多人只知道使用继承的表面形式来创建一个类,却不知道其内部真正的创建是由type来创建的. type?这不是判断对象类型的函数吗? 是的,type通常用法就是用来判断对象的类型.但除此之外,他最大的用途是用来动态创建类.当Python扫描到class的语法的时候,就会调用type函数进行类的创建. .…
content: 上: 1.property动态属性 2.__getattr__和__setattr__的区别和在属性查找中的作用 3.属性描述符 和属性查找过程 4.__new__和__init__的区别 下: 5.什么是元类和自定义元类 6.用元类实现orm ============================= 一.property动态属性 1.什么是property? 在面向对象编程中,我们一般把名词性的东西映射成属性,动词性的东西映射成方法.在python中他们对应的分别是属性se…
廖雪峰的python教程有python元类编程示例,综合代码如下 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319106919344c4ef8b1e04c48778bb45796e0335839000#0 class Field(object): def __init__(self, name, column_type): self.name = name sel…
来源:http://python.jobbole.com/88582/ @property装饰器,是将类中的函数当做属性调用 Python类中定义的属性,如果属性名前面只有一个下划线,那么就是一种规范,说明此属性是一种不用来被调用的属性,并不是说该属性就真的可以被隐藏,如果是双下划线的话,该属性是可以被Python的内部机制机型一定程度的“隐藏”的,其实也不是真正的隐藏,可以通过一些机制继续调用.   使用@property装饰器来装饰某一个属性,是该属性可以像函数一样实现一定的逻辑,但是调用却…
前言: 没有前言了- -......这系列是整理的以前的笔记上传的,有些我自己都忘记我当时记笔记的关联关系了. 记住以后 笔记记了就是用来复习的!!!不看不就啥用没了吗!!! content: 1.python中的对象和变量引用 2.del语句和垃圾回收 3.数据类型的可变性(常因为这个出现的经典错误) ================ 1.python中的对象和变量引用 a.python和java中的变量本质完全不一样 静态语言最开始的时候就分配了一个盒子,盒子里的东西是什么最开始就是定好了的…