迭代器是访问集合元素的一种方式。实现是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')

这个生成器类似中断回调机制。