生成器与迭代器

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值