close yield

close的方法主要是关闭子生成器,需要注意的有4点:
1.如果生成器close后,还继续next,会报错StopIteration
 
[图片]
 
 
2.如果我捕获了异常,将GeneratorExit处理了,之后还有一个yield,这时候close之后,还要next会报错RuntimeError异常
 
3. 如果我close之后的代码没有next,另外yield的捕获异常之后也没有yield,那么代码不报错,正常执行
 
4.如果在yield捕或GeneratorExit之后,raise StopIteration方法,close之后也不next,那么代码也不抛出异常,因为子生成器抛出的StopIteration的方法,委托生成器会继续执行,不会影响
 
 
5.如果我close之后,不在next,另外yield中也不捕获异常,代码正常

posted @ 2018-12-08 09:49  CrossPython  阅读(205)  评论(0编辑  收藏  举报