迭代器的好处:
(1) 从容器类型中一个一个取值,会取到所有的值
(2) 节省内存空间:
(1) 不会占用大量的内存,二十随着循环每次生成一个
(2) 每次next 给一个
迭代器:
可迭代的 -- 可迭代协议 含有__iter__的方法('__iter__' in dir(data))
可迭代一定能被循环
迭代器协议: 含有__iter__和 __name__两种协议
迭代器一定可以迭代,可迭代的通过调用iter() 方法就能得到一个迭代器
生成器:
1. 本质就是迭代器
2. 含有yield关键字的函数就是生成器函数
3. 特点:
(1) 调用函数之后函数不执行, 返回一个生成器
(2) 每次调用next方法的时候会取一个值
(3) 直到取完最后一个,在执行next会报错