迭代器
什么是迭代器?
可迭代对象调用__iter__方法就创建迭代器对象
迭代器对象调用__next__方法,可以获取到迭代器中下一个元素,和for循环一样
l = [1,2,3,4,56,87] #l是列表 也是可迭代对象
rex = l.__iter__() #生成迭代器对像
rex.__next__() #取值
1
生成器
函数中如果存在yield关键字,在调用函数之前,还是一个普通函数,一旦调用函数,就把函数变成了生成器(迭代器)
def index():
print('from index')
print('hello world')
yield 123
print('second')
print('second')
print('second')
print('second')
print('second')
yield 222
print('three')
****************
生成器一定是迭代器
迭代器不一定是生成器
***************
index加括号调用====>index() ,函数index不会运行,
res = index() ======》此时才是生成器 ,生成器也是迭代器有__next__属性
res=index() # 此时就是生成器
ret=res.__next__() # 代码遇到yield关键字,会停住,夯住
ret=res.__next__() # 再次执行__next__,代码从上一次被停住的位置继续往下执行
ret=res.__next__()
运行结果如下
from index
hello world
second
second
second
second
second
three
:
迭代器是通过调用__iter__方法创建,使用__next__获取元素。生成器是包含yield关键字的函数,调用时变为迭代器。生成器在遇到yield时暂停,下次调用__next__会从暂停处继续执行。
18万+

被折叠的 条评论
为什么被折叠?



