生成器与迭代器

举报
鸣海步 发表于 2022/04/20 11:46:51 2022/04/20
【摘要】 # 1、使用生成器编程实现生产者消费者模型import time def consumer(name):    print('我是【%s】,我准备开始吃包子了' % name)     # 等包子过程    while True:        baozi = yield        time.sleep(0.1)        print('%s 很开心的把【%s】吃掉了' % (nam...

# 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)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。