python生成式的send

2022-05-03 01:42:12 字數 766 閱讀 6488

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

def

generator():

while

true:

receive=yield 1

print('

extra

'+str(receive))

g=generator()

print

(next(g))

print(g.send(111))

print(next(g))

輸出:

1extra111

1extranone

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後面跟著的表示式。

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

send只有在生成器啟動後才能使用,會用send內的值代替當前迭代器停留位置的yield expression並且移動到下乙個yield expression並返回yield的值。

Python學習之生成式的send 詳解

python學習 有所幫助。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 1e...

Python筆記 生成器方法send

日期 20170926 生成器內有乙個方法send,可再次傳入乙個值。上面那句可能聽不懂,但是不要緊,我們先來看看 usr bin python3 defmygenerator value yield 1yield value return done gen mygenerator print ne...

python 生成器即send()用法

作者首先介紹了生成器的作用 是為了讓程式設計師可以更簡單的編寫用來產生值的序列的 然後又介紹了一些其他知識。然後介紹了send是pep 342加入的新特性 通過 send 方法來將乙個值 傳送 給生成器。other yield foo 這樣的語句的意思是,返回 foo 的值,這個值返回給呼叫者的同時...