码迷,mamicode.com
首页 > 编程语言 > 详细

生成器与协程 | Python

时间:2018-01-18 01:07:10      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:简单   nbsp   count   turn   退出   ret   函数   hello   简单的   

# 生成器与协程
# 生成器是一种特殊的迭代器,它同样生成一个值的序列;
# 如何定义生成器?
# 方法一:函数中使用yield关键字;
    class count_down(n):
        while n>0:
            yield n
            n-=1
    # 创建一个生成器对象
    c = count_down(10)
    # __next__()方法调用生成器;
    >> c.__next__()
    10
# 生成器对象提供了close()方法,来避免部分消耗;
# 即:停止使用生成器时,就会自动调用close()方法;
    class count_down(n):
        try:
            while n>0:
                yield n
                n-=1
        except GeneratorExit:
            print(捕捉到退出的异常!)
    c = count_down(10)
    for i in c:
        print(i)
        if i==5:
            break
    >> ... # 循环输出至5
    >> 捕捉到退出的异常!
    
# 生成器实现简单的协程
    def coroutine(func):
        def start():
            g = func()
            g.next()
            return g
        return start
    @coroutine
    def receiver():
        while True:
            n = yield
            print("Got %s"%n)
    r = receiver()
    r.send(hello world)

 

生成器与协程 | Python

标签:简单   nbsp   count   turn   退出   ret   函数   hello   简单的   

原文地址:https://www.cnblogs.com/pymkl/p/8306852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!