生成器高级特性2

Posted z-qinfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器高级特性2相关的知识,希望对你有一定的参考价值。

生成器除了前面提到的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的主要内容,如果未能解决你的问题,请参考以下文章

python高级特性

Python的高级特性(切片,迭代,生成器,迭代器)

Python3 高级特性

python高级特性的一般认识

生成器高级特性2

[3][高级特性]列表生成式[3]