码迷,mamicode.com
首页 > 编程语言 > 详细

python生成器yield和send

时间:2018-01-17 20:10:47      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:异常   通过   while   ext   gen   生成器   value   nbsp   程序   

创建生成器

 1 #第一种创建生成器的方法
 2 #使用()创建生成器,如果使用[]则创建列表
 3 a = (x**2 for x in range(1, 5))
 4 #可以通过next一直产生新的数据,直到最后一个报异常,通过for遍历不会报异常
 5 #也可以使用a.__next__()
 6 print(next(a))#输出1
 7 print(a.__next__())#输出4
 8 print(next(a))#输出9
 9 
10 #通过for遍历生成器
11 for i in a:
12     print(i)
13 
14 #第二种创建生成器的方法
15 def createNum(n):
16     for i in range(n):
17         yield i**3
18 
19 for i in createNum(5):
20     print(i)

 

生成器的send用法 generator.send(value)

 1 #生成器的send用法 generator.send(value)
 2 def test():
 3     i = 1
 4     while i < 5:
 5         temp = yield i**2
 6         print(temp)
 7         i += 1
 8 
 9 t = test()
10 #第一次运行只能使用next或者send(None)
11 print(t.__next__())
12 #send的作用相当于使生成器继续运行,并且传递的参数为yield的返回值(程序中即temp的值)
13 print(t.send("Hello World"))
14 print(t.__next__())#相当于send(None) 此时temp = None

python生成器yield和send

标签:异常   通过   while   ext   gen   生成器   value   nbsp   程序   

原文地址:https://www.cnblogs.com/xhcdream/p/8304953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!