回顾:
1、动态语言
sys.getrefcount() 对象被引用的次数。
增加对象引用次数的场景:以赋值方式创建对象;对象作为某容器的元素时;被当做参数传递给函数时;为对象创建另外的变量名;
减少引用计数:引用此对象的某变量名被显式销毁 del x ;给引用此对象的变量名重新赋值;从容器中移除对象,list.pop();容器本身被销毁;
完备和非完备遍历
Python迭代器
又称游标,是程序设计的软件设计模式,是一种可在容器物件上实现元素遍历的接口。是一种特殊的数据结构,在Python中,也是以对象存在的。
iterable 可迭代对象 :对象实现了__iter__方法;用户自定义的一些包含了__iter__()或者__getitem__方法的类;序列类型list、str、tuple。非序列类型 dict,file等 支持每次返回自己所包含的一个成员对象。
调用__iter__方法 就在内存中创建了一个迭代器,通过next方法遍历其元素,直到遍历结束。不会再从头开始。
iter()函数可以实现生产一个迭代器。
迭代器是遵循迭代协议的对象,for循环开始时,会通过迭代协议传递给iter()内置函数,从而能够从可迭代对象中获得一个迭代器,返回的对象含有需要的next()方法。
列表解析:是迭代机制的一种应用。用于基于已有的列表高效的实现新的列表。
[expression for iter_var in iterable(可迭代对象)]
l2 = [ i ** 2 for i in l1]
[expression for iter_var in iterable if cond_expr] 通过if判断符合条件的元素