首页 > 其他 > 详细

生成器

时间:2021-05-10 00:28:22      阅读:17      评论:0      收藏:0      [点我收藏+]

创建方式:

1 >>> gen = (i for i in range(10))
2 >>> type(gen)
3 <class generator>
1 def gen():
2     for i in range(10):
3         yield i
4         
5 print(type(gen()))
6 
7 #结果:
8 #<class ‘generator‘>

方法: send()

 1 def gen():
 2     i = 0
 3     try:
 4         while i < 3:
 5             r = yield i
 6             print(fr--->{r})
 7             i += 1
 8     except:
 9         print(end)
10 
11 
12 g = gen()                
13 print(g.send(None))
14 print(g.send(first))
15 print(g.send(second))
16 
17 ”“”
18 结果:
19 0
20 r--->first
21 1
22 r--->second
23 2
24 end
25 “”“

第13行传None的原因:

程序运行到13行时,跳转到第一行开始执行,一直到第5行,此时程序是先运行=右边的yield i,把i抛出后,程序就暂停了,还没进行赋值操作,所以在第13行的send中只能传None。

接着程序运行14行,程序就直接从第5行开始执行,此时就会把第14行中send传的first,赋值给r,然后的执行顺序6-7-5(第5行只会执行=右边,然后再次暂停)。

生成器

原文:https://www.cnblogs.com/panlj/p/14748871.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!