1. 程式人生 > >python生成器yield和send

python生成器yield和send

生成 while div end 傳遞 post 新的 send reat

創建生成器

 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