python生成式的send()方法(詳解)

NO IMAGE

隨便在網上找了找,感覺都是講半天講不清楚,這裡寫一下。


def generator():
  while True:
    receive=yield 1
    print('extra' str(receive))


g=generator()
print(next(g))
print(g.send(111))
print(next(g))

 輸出:


1
extra111
1
extraNone
1

為什麼會這樣呢,點進send就能看到一句話

send:Resumes the generator and “sends” a value that becomes the result of the current yield-expression.

就是說 這裡yield 1整體被視為一個表示式,你send的內容會作為這個表示式的值,隨便你左邊用什麼東西接收或者不接收,總之yield就是你send進來的那個東西。這個表示式變成你send進來後的東西后繼續執行,再次遇到yield,輸出yield後面跟著的表示式。

當然通常使用的話都不會輸出一個常量,會輸出一個和接收到的東西相關的量,不然豈不是白白髮送了。

以上這篇python生成式的send()方法(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援指令碼之家。

您可能感興趣的文章:

Python中的列表生成式與生成器學習教程淺談Python中列表生成式和生成器的區別在Python中使用列表生成式的教程通過程式碼例項展示Python中列表生成式的用法