python生成器yield和send
创建生成器
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