生成器函數
1.什麼是生成器?對象
在函數內但凡出現yield關鍵字,再調用函數就不會執行函數體代碼,會返回一個值,該值稱爲生成器。ip
生成器的本質就是迭代器。for循環
2.爲何要用生成器?循環
生成器是一種自定義迭代器的方式yield
3.如何使用生成器?迭代器
和迭代器同樣,用next(),for循環,到函數中的yield即會中止總結
總結yield的功能next
1.提供一種定義迭代器的方式生成器
2.yield能夠暫停函數,並返回值
yield VS return
相同點:都是在函數內的,均可以有返回值,沒有類型的限制,沒有個數的限制
不一樣點:return只能返回一次值,yield能夠返回屢次值
瞭解:yield用法:
①yield + 值 經常使用
②x = yield 函數讀到yield就暫停,等待傳值,而後賦值給x,傳值用g.send(adj)
三元表達式:
res = x if x > y else y 條件成立時返回x,不成立時返回y
列表生產式:
l = [i**2 for i in range(1,10)]
names = [‘alex’,’wxx’,’egon’]
names = [name+’hh’ for name in names if name !=’egon’]
zip:x=[1,2,3] y = [0,0,0]
res = zip(x,y) res爲迭代器
max: max(x) x能夠是一個可迭代對象
生成器表達式:
g = (i for i in rang(10))