python yield: send, close, throw
send
1. yield可以产出值,可以接收值
2. 在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种
a. gen.send(None)
b. next(gen)
def gen_func():#1. 可以产出值, 2. 可以接收值(调用方传递进来的值)html = yield 1print(html)yield 2yield 3return "bobby"#1. 生成器不只可以产出值,还可以接收值 if __name__ == "__main__":gen = gen_func()#在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种1. gen.send(None), 2. next(gen)url = gen.send(None)#download urlhtml = "bobby"print(gen.send(html)) #send方法可以传递值进入生成器内部,同时还可以重启生成器执行到下一个yield位置print(gen.send(html))
close
不要随便try catch
def gen_func():yield "http://projectsedu.com"yield 2yield 3return "bobby"if __name__ == "__main__":gen = gen_func()print(next(gen))gen.close()print(next(gen))print("bobby")
如果要捕获异常,那么必须抛出StopIteration
def gen_func():try:yield "http://projectsedu.com"except GeneratorExit:raise StopIterationyield 2yield 3return "bobby"if __name__ == "__main__":gen = gen_func()print(next(gen))gen.close()print(next(gen))print("bobby")
throw
在yield地方进行捕捉,而不是下一个yield;生成器在return的时候会抛出一个StopIteration,这个异常会一直向上抛出(跟普通的异常一样向上抛出)
def gen_func():#1. 可以产出值, 2. 可以接收值(调用方传递进来的值)try:yield "http://projectsedu.com"except Exception as e:passtry:yield 2except Exception as e:passyield 3return "bobby"if __name__ == "__main__":gen = gen_func()print(next(gen))gen.throw(Exception, "download error") # 实际是 yield "http://projectsedu.com" 抛出异常
print(next(gen)) gen.throw(Exception, "download error1")
转载于:https://www.cnblogs.com/callyblog/p/11183778.html
python yield: send, close, throw相关推荐
- python throw_Python 生成器与它的 send,throw,close 方法(转帖以及记录)
Python 生成器与它的 send,throw,close 方法 在生成器中,无论生成器是什么状态,都可以直接使用throw与close. 生成器这一块,对于next,send网上的介绍比较多,但对 ...
- Python协程:从yield/send到async/await
这个文章理好了脉落. http://python.jobbole.com/86069/ 我练 习了一番,感受好了很多... Python由于众所周知的GIL的原因,导致其线程无法发挥多核的并行计算能力 ...
- python yield关键字全面解析
你是否曾因处理的数据集过大而内存溢出?你是否曾因为处理各种复杂的函数状态而烦恼?It does help! 本文聚焦yield generator, 帮助你解锁python进阶技法,写出更优雅的程序! ...
- Python yield 详解(嚼碎了喂你,一篇精通,无需再看其他文章)
Python yield详解 文章目录 Python yield详解 由"斐波那契"深入理解yield案例 第一个版本 第二个版本 问题的引出 第三个版本 第四个版本 总结 细化总 ...
- python yield 用法详解
python yield 生成器 文章目录 python yield 生成器 1. 背景 2. 如何生成斐波那契數列 清单 1. 简单输出斐波那契數列前 N 个数 清单 2. 输出斐波那契數列前 N ...
- Python yield 斐波那契数列
原文:https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ Python yield 使用浅析 您可能听说过,带有 ...
- 2020-12-11 Python yield 使用浅析
Python yield 使用浅析 您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一 ...
- 1、【转载】Python yield 使用浅析
1.[转载]Python yield 使用浅析 [注:此文转载自https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ ...
- Python yield generator
http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/, Python yield 使用浅析 这篇说的很清楚 主要看到F ...
最新文章
- NameNode任务线程之FSNamesystem$ReplicationMonitor
- 服务器的攻与防(firewall 禁止指定Ip)
- wordpress搭建个人博客
- 混合文件下分离xml文件和jpg文件
- 前端学习 -- 内联框架iframe
- Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
- Kubernetes 是一个“数据库”吗?
- python离散化方法_python中字符串离散化的例子
- SimpleDateFormat 类的总结
- STM32封装库下载
- 信捷XC系列PLC编程软件安装方法
- [境内法规]中国人民银行关于防范利用假美元洗钱的通知—银发[2006]第60号
- php 覆盖写入txt文件内容,PHP使用内置函数file_put_contents覆盖写入文件及追加内容的方法...
- windows无法访问 计算机打印机,windows无法打开添加打印机解决方法
- QuerySet,本质上是一个给定的模型的对象列表
- Unity Error while downloading Asset Bundle: Failed to decompress data for the AssetBundle
- 微信小程序开发 从创建到使用
- 洛谷 P3355 骑士共存问题
- 【12月英语——快乐中学习】
- linux for while语句的使用
热门文章
- JPA 系列教程12-复合主键-2个@Id+@IdClass
- 【转】JAVA 调用Web Service的方法
- Ubuntu 下安装AMBER10/AmberTools 1.2
- 狂人日记学习 之一 CSS布局的目的
- JavaScript设计模式(二)-- 工厂方法模式
- [NOIP10.6模拟赛]2.equation题解--DFS序+线段树
- 信息安全系统设计基础第四周学习总结—20135227黄晓妍
- apache将请求转发到到tomcat应用
- 在cs后台页面获取input的值方法
- 【JS】call,apply,bind