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
相关文章
相关标签/搜索