Python练习-生成器-一个生成器被坑的体无完肤

代码如下,尽可能独立阅读:

 1 # 编辑者:闫龙
 2 from urllib.request import urlopen #导入一个包,这就是egon留的一个坑
 3 def get(url):#这是为了保证题目的原装性所以还是要有一个url参数,实际上完全没有这个必要
 4     def index():#可能是egon想要我们更加熟悉闭包的概念
 5         while True:
 6             url = yield#在这里将yield返回的值赋给url
 7             print(urlopen(url).read())#打印url读出的结果
 8     return index
 9 g=get("纯粹为了题目要求留出的无聊参数")()#这里为了题目中的g生成器函数返回值
10 #其实上面这句话可以被理解为↓
11 #Gen = get("纯粹为了题目要求留出的无聊参数")
12 #g = Gen()
13 #这里就是用到了多重函数的概念
14 next(g)#程序执行到yield时,url等待yield的返回值
15 g.send("http://www.baidu.com")#将参数值使用send的方式传递给yield
16 #传值之后yield将值返回给url,程序继续执行直到循环再次遇到yield时,url等待yield的返回值
17 g.send("http://www.oldboyedu.com/")
18 g.send("http://www.python.org")

 

posted @ 2017-04-11 22:42  DragonFire  阅读(337)  评论(0编辑  收藏  举报