迭代器是访问集合元素的一种方式。实现是next()方法
# coding:utf-8
a = iter([1,2,3])print(a)
try:
print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__())
except StopIteration:
print ('遍历完毕')

生成器generator
定义:一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就会变成生成器
作用:
这个yield的主要效果呢,就是可以使函数中断,并保存中断状态,中断后,代码可以继续往下执行,过一段时间还可以再重新调用这个函数,从上次yield的下一句开始执行。
另外,还可通过yield实现在单线程的情况下实现并发运算的效果
#!/user/bin/evn python
#-*- coding:utf-8 -*-
import time
def consumer(name):
print('%s准备吃包子了!'%name)
while True:
baozi = yield
#
print('包子%s来了,被%s吃了!'%(baozi,name))
def producer(name):
c = consumer('A')
c2 = consumer('B')
c.__next__()
c2.__next__()
print('开始准备做包子了')
for i in range(1,6):
time.sleep(1)
print('做了两个包子')
c.send(i)
c2.send(i)
producer('Jason')
这个生成器类似中断回调机制。
本文介绍了迭代器和生成器的基本概念及应用。迭代器是一种访问集合元素的方式,通过next()方法实现。生成器是一种特殊的函数,使用yield关键字实现状态保存和并发效果。文中还提供了一个生成器的应用实例。
1067

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



