生成器除了前面提到的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 , 生成器中将异常捕获 , 这里正常执行
日拱一卒无有尽,功不唐捐终入海
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步