day 12 函式生成器
阿新 • • 發佈:2018-11-08
一 . 1.迭代器 : __iter__( ) __next__( )
生成器 :本質就是迭代器,兩種方式寫生成器 (1)生成器函式 (2)生成器表示式
2.生成器函式:函式內部由yield. yield返回 - >return ,yield可以把函式分段執行,生成器函式被呼叫的時候,返回生成器。
def func ( ):
yield
g = func ( ) ---得到生成器
生成器的用法和迭代器基本一致,__next__( )開始執行生成器,執行到yield.知道沒有yield,丟擲StopIteration
send ( ) 可以給上一個yield傳值
(1)省記憶體 (2)惰性機制,不訪問 __next__( )就沒有值 (3)只能向前,不能反覆
二 . 各種推導式
1.列表推導式 [ 結果 for 迴圈 if 判斷
2.字典推導式 { key : value for迴圈 if 判斷 }
3.集合推導式 { key for 迴圈 if 判斷}
三 . 生成器表示式(難點)
( 結果 for 迴圈 if 判斷)
惰性機制 ,不訪問__next__( ) 就沒有值
只能向前,不能反覆