生成器与迭代器
# 1、使用生成器编程实现生产者消费者模型
import time
def consumer(name):
print('我是【%s】,我准备开始吃包子了' % name)
# 等包子过程
while True:
baozi = yield
time.sleep(0.1)
print('%s 很开心的把【%s】吃掉了' % (name,baozi))
def producer():
c = consumer('鸣海步')
#c.__next__()
next(c)
for i in range(10):
time.sleep(0.1)
c.send('包子 %s' % i) #发送的值,就是yield的返回值
producer()
print()
# 2、使用生成器编写一个生成斐波那契数列的函数
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
fib = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print(next(fib), end=" ")
except StopIteration:
'''退出程序引发 SystemExit 异常, 可以捕获异常执
行些清理工作。n 默认值为 0, 表示正常退出,
其他都是非正常退出。'''
sys.exit(0)
- 点赞
- 收藏
- 关注作者
评论(0)