迭代器的生成
迭代器的生成
可迭代对象-可迭代的 Iterable
内部含有——iter——
from collections import Iterable
isinstance(要检测的值 Iterator)
访问迭代器中的值:迭代器——next——()
能被for 循环的都是可迭代的
for循环的本质
循环不是迭代器的可迭代对象:不具备next方法的可迭代对象——iter——()就得到了一个迭代器
循环迭代器:直接调用迭代器的next 方法
生成器--迭代器
生成器函数--函数内含有yield关键字
函数的调用返回一个生成器
从生成器中取值的方法和从迭代器中取值的方法完全相同的
next------不常用
for -------最好
list-----最不好
在定义生成器的时候:关键字 yield
在使用生成器的时候:next send
生成器表达式
就是将列表推导式的中括号改成小括号
列表推导式的结果就是一个列表,生成器表达式的结果是一个生成器
生成器中的内容不获取就不生成,惰性运算
注意事项
next for list 不要混用
生成器函数和装饰器函数一起用
预激生成器的装饰器,在这个装饰器中只做一件事:next(g)