迭代器
什么是迭代器
一个可迭代的方法执行了__inter()__之后的返回值就是一个迭代器
可迭代协议
只要含有__iter__方法的都是可迭代的或可以被for循环
迭代器协议
内部含有__next__和__iter__方法的都是迭代器
__next()__方法可以一个一个获取值
for循环其实就是迭代器
所以
如果不知道一个方法可以不以for循环,就判断他是不是一个可迭代器
节约内存
迭代器并不会在内存中再占用一大块内存,而是随着循环每次生成一个
例子:自己写一个for循环
l = [1, 2, 3, 4, 5]
inter = l.__iter__()
for i in l:
print( inter.__next__())
生成器
只要含有yield关键字的函数都是生成器函数
生成器是迭代器
def generator():
print(1)
yield 'a'
ret = generator()
print(ret)
yield不可以与return共用且写在函数内
yield不会结束函数
生成器函数执行之后可以形成生成器作为返回值
def generator():
print(1)
yield 'a'
ret = generator()
print(ret)
print(ret.__next__())