生成器函數的進階和表達式and各種推導式
阿新 • • 發佈:2018-01-03
gen 內存地址 print %d clas 傳遞 gpo 區別 數據類型
生成器函數的進階
send的效果與作用範圍和next一模一樣
send獲取下一個值的效果和next基本一致
第一次不能用send
函數中的最後一個yield不能接收新的值
只是再獲取下一個值的時候,給上一個yield的位置傳遞一個數據
使用send的註意事項
#第一次使用生成器的時候,是用next獲取下一個值
#最後一個yield不能接收外部的值
def generator(): print(123) content = yield 1 print(‘=======‘,content) print(456) arg = yield 2 ‘‘‘‘‘‘yield # g1 = generator() # g2 = generator() # g1.__next__() # g2.__next__() # print(‘********‘,generator().__next__()) # print(‘********‘,generator().__next__()) g = generator() ret = g.__next__() print(‘***‘,ret) ret = g.send(‘hello‘) print(‘***‘,ret)
各種推導式
egg_list=[‘雞蛋%d‘%i for i in range(10)]print(egg_list)
g = (i for i in range(10)) print(g) #生成器的內存地址 for i in g: print(i) #與列表生成器的區別:括號不一樣,返回的值=======幾乎不占內存
各種推導式
[滿足條件的元素相關的操作 for 元素 in 可叠代的數據類型 if 元素相關的條件]
生成器註意
1》生成器中的數據只能取一次,取完就沒了。
2》惰性運算。
生成器函數的進階和表達式and各種推導式