1. 程式人生 > >生成器函數的進階和表達式and各種推導式

生成器函數的進階和表達式and各種推導式

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各種推導式