首页 > 其他 > 详细

生成器函数03

时间:2019-11-15 19:07:26      阅读:62      评论:0      收藏:0      [点我收藏+]
 1 #生成器--->本质是迭代器
 2 
 3 #生成器函数:只要含有yield关键字的函数就是生成器函数
 4 
 5 #yield不能和return共用 且只能用在函数里
 6 
 7 #生成器函数执行之后得到一个生成器作为返回值
 8 
 9 
10 def generator():
11     print(123)
12     content = yield 1
13     print(=========,content)
14     print(456)
15     yield 2
16     
17 g = generator()
18 
19 ret = g.__next__()
20 
21 print(***,ret)
22 ret = g.send(hello)
23 print(***,ret)
24     
25 #next 和 send的用法
26 #send获取下一个值的效果和next基本一致
27 #只是在获取下一个值的时候给上一个值传递一个数据
28 #send注意事项
29     #生成器函数必须使用next获取第一个值
30     #最后一个yield不能获取外部的值
31     
32     
33 #******************************案例 获取移动平均值********************************
34 
35 def average():
36     sum_m = 0
37     count = 0
38     avg = 0
39     while True:
40         num = yield avg
41         sum_m += num
42         count += 1
43         avg = sum_m/count
44         
45     
46 avg_g = average()
47 avg_g.__next__()
48 avg1 = avg_g.send(10)
49 avg1 = avg_g.send(30)
50 avg1 = avg_g.send(50)
51 print(avg1)  
52 
53 #******************************案例 带装饰器的生成器*******************************
54 def init(func):
55     def inner(*args,**kwargs):
56         g = func(*args,**kwargs)
57         g.__next__()
58         return g
59     return inner
60 @init
61 def average():
62     sum_m = 0
63     count = 0
64     avg = 0
65     while True:
66         num = yield avg
67         sum_m += num
68         count += 1
69         avg = sum_m/count
70     
71 avg_g = average()
72 avg1 = avg_g.send(10)
73 
74 #*********************************生成器 yield from*****************************
75 
76 def generator():
77     a = abcdefg
78     b = 1234567
79     yield from a
80     yield from b
81     
82 g = generator()
83 
84 for i in g:
85     print(i)
86     
87 #*********************************生成器表达式**********************************
88 g = (i for i in range(10)) 
89 #g 是得到的生成器

 

生成器函数03

原文:https://www.cnblogs.com/zhengyinboke/p/11868864.html

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