send

1. yield可以产出值,可以接收值

2. 在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种

  a. gen.send(None)

  b. next(gen)

def gen_func():
#1. 可以产出值, 2. 可以接收值(调用方传递进来的值)
html = yield 1
print(html)
yield 2
yield 3
return "bobby" #1. 生成器不只可以产出值,还可以接收值
if __name__ == "__main__":
gen = gen_func()
#在调用send发送非none值之前,我们必须启动一次生成器, 方式有两种1. gen.send(None), 2. next(gen)
url = gen.send(None)
#download url
html = "bobby"
print(gen.send(html)) #send方法可以传递值进入生成器内部,同时还可以重启生成器执行到下一个yield位置
print(gen.send(html))

close

 不要随便try catch

def gen_func():
yield "http://projectsedu.com"
yield 2
yield 3
return "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 StopIteration
yield 2
yield 3
return "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:
pass
try:
yield 2
except Exception as e:
pass
yield 3
return "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")

 

最新文章

  1. [vijos1427]机密信息
  2. B. Mr. Kitayuta's Colorful Graph
  3. Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
  4. 如何从硬盘安装fedora 19 (How to install fedora 19 from hard drive, Fedora-19-i386-DVD.iso)
  5. python的工作记录A
  6. 2013第38周日Java文件上传下载收集思考
  7. 模式识别 - libsvm该函数的调用方法 详细说明
  8. Hbase的架构原理、核心概念
  9. Kylin引入Spark引擎
  10. Python系列:一、Python概述与环境安装--技术流ken
  11. java 发邮件
  12. tomcat接口调用时延开关
  13. spring 自定义标签的实现
  14. 洛谷P1126 机器人搬重物【bfs】
  15. Win7 VS2013环境使用cuda_7.5.18
  16. Tomcat学习总结(11)——Linux下的Tomcat安全优化
  17. in文件
  18. ios开发之--调整UISearchBar的输入框的背景颜色
  19. Git_期末总结
  20. onItemClick(AdapterView<?> parent, View view, int position, long id)

热门文章

  1. 常见跨域解决方案以及Ocelot 跨域配置
  2. 项目中出现多个域名下的Cookie
  3. qt 界面去掉系统边框
  4. Python3中13个实例汇总
  5. python爬虫三大解析库之XPath解析库通俗易懂详讲
  6. Java生鲜电商平台-IntelliJ IDEA 最新注册码,亲测可用
  7. 基于token机制鉴权架构
  8. CSTC-2017-Web-writeup
  9. Windows下的DNS命令用法
  10. Flutter学习笔记(1)--环境安装