def gen_func():try:yield 1except Exception as e:passyield 2yield 3yield 4yield 5return "bobby"if __name__ == "__main__":gen = gen_func()print(next(gen))a=gen.throw(Exception, "download error")print (a)#2print(next(gen))#注意,打印的是3不是2

throw有两方面的作用,首先是抛给生成器一个异常,然后如果生成器能处理掉异常的话,throw方法接着迭代一次取得返回值,比如上面这个案例就抛给了生成器一个Exception异常,然后生成器处理掉了。

注意,捕获异常是在上一次迭代中断的位置捕获,因为每次生成器运行的时候,都是从上一次发生yield中断的地方开始运行,所以抛来的异常发生在这个地方,捕获当然也要在这个地方。因为这个例子中异常被处理了,所以throw方法要完成他的第二张任务:让生成器迭代一次。于是,a为2

再说close,他只有一个作用,就是像生成器抛出GeneratorExit异常。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def myGenerator():  try:yield 1yield 2except GeneratorExit:print ("aa")#yield 如果加上这句话,则生成器抛出runtimeerror,close与前面文章GeneratorExit的最后一个例子中的del不同,这个runtimeerror主程序不会忽略,主程序因此异常而退出gen = myGenerator()
print (next(gen))
gen.close()
print ('bb')'''
aa
bb
'''

GeneratorExit异常的产生意味着生成器对象的生命周期已经结束。因此,一旦产生了GeneratorExit异常,生成器方法后续执行的语句中,不能再有yield语句,否则会产生RuntimeError

Python生成器的throw和close方法相关推荐

  1. Python生成器next方法和send方法区别详解

    yield的语法规则是: 在yield这里暂停函数执行,并返回yield后面表达式的值(默认为None),直到被next()再次调用时,从上次暂停的yield代码处继续往下执行.当没有可继续next( ...

  2. Python生成器函数的定义,使用,方法,实例,(yield、yield from)

    本位目标人群是拥有Python基础的开发者,主要目的是用通俗的语言讲Python生成器函数的特性,方法,和使用. 文章目录 前言 一.生成器是什么? 二.生成器的各种方法和关键字 1.yield, y ...

  3. python throw_Python 生成器与它的 send,throw,close 方法(转帖以及记录)

    Python 生成器与它的 send,throw,close 方法 在生成器中,无论生成器是什么状态,都可以直接使用throw与close. 生成器这一块,对于next,send网上的介绍比较多,但对 ...

  4. Python生成器(send,close,throw)方法详解

    <Python生成器>一节中,详细介绍了如何创建一个生成器,以及生成器的基础用法.本节将在其基础上,继续讲解和生成器有关的一些方法. Python生成器send()方法 我们知道,通过调用 ...

  5. python生成器杨辉三角_python 生成器生成杨辉三角的方法(必看)

    用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...

  6. Python生成器对象send()方法用法

    关于生成器基本用法请参考详解Python生成器函数和生成器对象的原理和用法 >>> def f():     yield from 'abcdefg'     #使用yield表达式 ...

  7. python 生成器 send_python(可迭代对象,迭代器,生成器及send方法详解)

    一.可迭代对象 对象必须提供一个__iter__()方法,如果有,那么就是可迭代对象, 像列表,元祖,字典等都是可迭代对象 可使用isinstance(obj,Iterable)方法判断 1 from ...

  8. Python 生成器 和 yield 关键字

    Python 中 yield 的作用:http://youchen.me/2017/02/10/Python-What-does-yield-do/# Python 生成器详解:http://codi ...

  9. 第4.2节 神秘而强大的Python生成器精讲

    一. 生成器(generator)概念 生成器是一个特殊的迭代器,它保存的是算法,每次调用next()或send()就计算出下一个元素的值,直到计算出最后一个元素,没有更多的元素时,抛出StopIte ...

最新文章

  1. LeetCode实战:环形链表 II
  2. FPGA-YC输出一个4边框
  3. 如何周密规划决策制定过程
  4. 客户说有了PAI-AutoML,一下子可以节约半年开发周期
  5. SpringBoot 迭代输出
  6. Android OpenSL ES 对象结构
  7. 搞工程和搞电子的人摆摊能做什么?
  8. 微信小程序入门的一些建议,替大家踩坑
  9. socket read time out解决方法_深入浅出讲解:php的socket通信
  10. [leetcode]476. 数字的补数
  11. c#参数修饰符-ref
  12. visio软件接口流程图_用Visio制作最专业的技术流程图教程
  13. Aha!设计模式(96)-观察者模式(1)
  14. python画spc控制图_如何选择最适合我们的SPC控制图?
  15. 自动控制原理学习笔记(五)
  16. 体脂率在线计算机,体脂率(BFR)计算器
  17. 公众号文章写作学习|《写作,是最好的自我投资》干货整理
  18. lattice开发错误集合
  19. 《筑墙——只需一点点安全常识就能阻止网络犯罪》
  20. VIJOS-P1626 桐桐的糖果计划

热门文章

  1. python3:利用openpyxl xlwt xlrd实现对excel的增删改查和读入
  2. 【程序员入门记录】ThinkPad E470改造记录——换屏
  3. 读计算机应用需要哪些条件,邓迪大学计算机应用本科申请条件.pdf
  4. 基于javaweb计算机组成原理远程教育平台研究与开发
  5. 6-10 两个字符串穿插 (10分) PTA
  6. Unity物体碰撞出现穿插问题/穿过问题/物体穿过场景模型
  7. 蓝桥杯 python 青少年 真题_蓝桥杯Python真题解析
  8. 灰色GM(1,1)模型及其在电力负荷预测中的应用附Matlab代码
  9. 框架指针的省略(FPO)
  10. Spark 全套知识体系,终于搞到了!