1,生成器
生成器的本質就是迭代器(_next_())
生成器的特點和迭代器一樣,取值和迭代一樣
生成器一般由生成器函數或者生成器表達式來創建
其實就是手寫的迭代器
2,生成器函數
和普通的函數沒有區別,裏面的yield函數就是生成器函數
生成器函數在執行的時候,默認不會執行函數體,返回生成器
通過生成器的_next_()分段來執行這個函數,send()給上一個yield傳值,
不能再開頭(沒有上一個yield)
3.推導式:
就是是用一句話生成一個列表
1.列表推導式[結果 for循環 條件篩選]
2,字典推導式{k:v for循環 條件篩選}
3,集合推導式{k:for循環 條件}
4.生成器表達式
(結果 for循環 條件)
特點:
1.惰性機制
2.只能向前
3.節省內存(雞蛋)
2,yield和return作用一樣都可以返回函數
yield的for循環
3,
send和_next_()的區別:
1.send和next都是讓生成器向下一次走
2,send可以給上一個yield的位置傳遞值,不能給最後一個傳值
4.迭代模仿for循環
6.枚舉
輸出:
(0, '容妃')
(1, '貴妃')
(2, '愛妃')
7 .主要內容回顧 1,生成器 2,推導式 3,生成器表達式 4.生成器函數 1.在函數內部有個yield 2,在這個時候我們執行這個函數,這個時候獲取的是生成器 3._next_()可以觸發生成器的執行,執行下一個yield 4.send().可以給上一個yield傳值,執行到下一個yield.不能再開頭和結尾 特點:惰性機制,只能向前,節省內存 2.推導式 1.列表推導式: [結果 for 判斷] 2.字典推導式 {k:v for 判斷} 3.集合推導式 {k for 判斷} 4.生成器表達式 (結果 for 判斷) 元祖是沒有表達式的,因爲元祖是不可 變得 3.內置函數 3.6.2的版本有68個內置函數