立即学习:https://edu.csdn.net/course/play/26676/399743?utm_source=blogtoedu
生成器对象和迭代器对象优化了内存的存储。
可迭代对象:列表、字符串、字典
判断对象是否属于可迭代对象可以采用:hasattr这个内置函数。
hasattr(对象,__方法__),如果返回true,这表示这个对象有这个方法。
迭代器:
使用iter(对象)将对象变为迭代器。
例如:
lst[1,2,3,4] 这个列表已经被完全读入内存中了。
迭代器里面的元素也是1234,但迭代器中的元素并没有被读入内存。
__next__方法:迭代器对象所特有的方法。将元素依次读入内存。执行一次,读入一个元素。循环到最后一个元素时,假如再执行一次,迭代器对象就要报错。
生成器对象可迭代,同时也是可迭代对象。
用yield代替return后,对象就变成了生成器对象。
yield作用是当执行到这个地方时,暂停,等待下次调用__next__()方法时,再从暂停的地方继续执行。
()也可以理解为生成器解析。