首页 > 其他 > 详细

生成器高级特性2

时间:2019-12-25 01:34:42      阅读:129      评论:0      收藏:0      [点我收藏+]

生成器除了前面提到的send方法传参之外,还有两个比较重要的方法

close()  : 关闭生成器. 关闭生成器之后,如果后面还想从生成器中值 ,会报错

throw() : 传个异常到生成器内部 

 

def gen_func():
    yield 1
    yield 2
    yield 3

if __name__ == __main__:
    # 生成一个生成器对象
    gen =  gen_func()
    print(next(gen))  # 1
    gen.close()
    print(next(gen))  # close gen 之后 ,报StopIteration错

 

def gen_func():
    yield 1
    yield 2
    yield 3


if __name__ == __main__:
    # 生成一个生成器对象
    gen = gen_func()
    print(next(gen))  # 1
    gen.throw(Exception, error....)  # 抛个异常
    print(next(gen))  # 不会执行, 

 

def gen_func():
    try:
        yield 1
    except:
        pass
    yield 2
    yield 3


if __name__ == __main__:
    # 生成一个生成器对象
    gen = gen_func()
    print(next(gen))  # 1
    gen.throw(Exception, error....)  # 抛个异常
    print(next(gen))  # 3  , 生成器中将异常捕获 , 这里正常执行

生成器高级特性2

原文:https://www.cnblogs.com/z-qinfeng/p/12094281.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!