【代碼學習】PYTHON 生成器
阿新 • • 發佈:2017-07-20
eat 生成式 運行 進行 tar temp next 如果 for
一、生成器
一遍循環一遍計算的機制,稱為生成器
二、生成器的特點:
1、節約內存
2、叠代到下一次的調用時,所使用的參數都是第一次所保留下的,即是說,在整個所有函數調用的參數都是第一次所調用時保留的,而不是新創建的
三、創建方法
1、把列表生成式的[]改為()
#列表 L = [x*2 for x in range(5)] print L #生成器 G = (x*2 for x in range(5)) print G
以上代碼運行結果
[0, 2, 4, 6, 8]
<generator object <genexpr> at 0x0000000002E40AF8>
2、yield 生成
yield 自動終止返回結果。
循環從終止的地方向下進行
def creatNum(): print ("----start----") i = 0 while i < 5: temp = yield i print(temp) i+= 1 #創建一個生成器對象 a = creatNum() #讓對象開始執行,第一次從頭開始執行,如果之前執行過,就從上一次停止的地方開始執行 next(a)
以上代碼運行結果
----start---- >>> next(a) None 1 >>> next(a) None2 >>> a.send("SQYY") SQYY 3 >>> next(a) None 4 >>>
四、補充:
send()
執行到yield時,gen函數作用暫時保存send發送過來的值
c.next()等價c.send(None)
【代碼學習】PYTHON 生成器