1. 程式人生 > >【代碼學習】PYTHON 生成器

【代碼學習】PYTHON 生成器

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)
None
2 >>> a.send("SQYY") SQYY 3 >>> next(a) None 4 >>>

四、補充:

send()

執行到yield時,gen函數作用暫時保存send發送過來的值

c.next()等價c.send(None)

【代碼學習】PYTHON 生成器