python生成式的send()方法
實(shí)例
def generator():
while True:
receive=yield 1
print('extra'+str(receive))
g=generator()
print(next(g))
print(g.send(111))
print(next(g))
輸出:
extra111
1
extraNone
1
為什么會(huì)這樣呢,點(diǎn)進(jìn)send就能看到一句話
send:Resumes the generator and "sends" a value that becomes the result of the current yield-expression.
就是說(shuō) 這里yield 1整體被視為一個(gè)表達(dá)式,你send的內(nèi)容會(huì)作為這個(gè)表達(dá)式的值,隨便你左邊用什么東西接收或者不接收,總之yield就是你send進(jìn)來(lái)的那個(gè)東西。這個(gè)表達(dá)式變成你send進(jìn)來(lái)后的東西后繼續(xù)執(zhí)行,再次遇到y(tǒng)ield,輸出yield后面跟著的表達(dá)式。
當(dāng)然通常使用的話都不會(huì)輸出一個(gè)常量,會(huì)輸出一個(gè)和接收到的東西相關(guān)的量,不然豈不是白白發(fā)送了。