可变类型:list、set、dict。不可变类型:num、string、元组
统计各个函数执行的时间
用装饰器
@property 修饰,就是将方法,变成一个属性来使用。
@classmethod 修饰类的方式
带修饰类方法:cls做为方法的第一个参数,隐式的将类做为对象,传递给方法,调用时无须实例化。
普通函数方法:self做为第一个参数,隐式的将类实例传递给方法,调用方法时,类必须实例化。
@staticmethod 修饰类的方式
跟classmethod差不多,但无需cls作为第一个参数
Python垃圾回收机制
Python中的垃圾回收是以引用计数为主,标记-清除和分代收集为辅。引用计数最大缺陷就是循环引用的问题,所以Python采用了辅助方法。
分配对象(object allocation)和取消分配对象(object deallocation)的次数。当两者的差值高于某个阈值时,垃圾回收才会启动。
引用计算:每个内存有多少个指针指向该内存,如果指针数(引用计数)为0,则该内存是可以回收的。
循环引用时,所有的引用计数都是1而不是0。
标记-清除:活动对象标记,非活动对象清除。判断活动对象用从根节点出发,有向图的可达域就是活动对象,从而讲孤岛清除。
分代收集:Python将所有的对象分为0,1,2三代,新对象为0代,GC之后仍然存活则为下一代。那些明明没有被引用但引用计数却不是零的对象进行引用计数减去一。