生成器和生成器函數以及各類推導式

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)生成器

相關文章
相關標籤/搜索