1. 生成器
本質就是迭代器.
一個一個的建立對象
建立生成器的方式:
1. 生成器函數
2. 經過生成器表達式來獲取生成器
3. 類型轉換(看不到)
2. 生成器函數 (重點)
生成器函數中包含 yield , 返回數據和return差很少.
return會當即結束這個函數的執行
yield 能夠分段的執行一個函數函數
生成器函數在執行的時候返回生成器. 而不是直接執行此函數對象
能向下執行的兩個條件:
__next__(), 執行到下一個yield
send(), 執行到下一個yield, 給上一個yield位置傳值內存
全部的生成器都是迭代器均可以直接使用for循環
均可以使用list()函數來獲取到生成器內全部的數據for循環
生成器中記錄的是代碼而不是函數的運行
def func():
print("個人天哪 ")循環
yield "寶寶"yield
gen = func() # 建立生成器. 此時運行會把生成器函數中的代碼記錄在內存
當執行到__next__(), 運行此空間中的代碼, 運行到yield結束.迭代器
優勢: 節省內存, 生成器自己就是代碼. 幾乎不佔用內存
特色: 惰性機制, 只能向前. 不能反覆next
3. 各類推導式 (詭異)
列表推導式 [結果 for循環 if]
字典推導式 {結果(k:v) for循環 if}
集合推導式 {結果(k) for循環 if}數據
4. 生成器表達式 (重點)
(結果 for循環 if)生成器