我正在閱讀Python基本參考,我無法理解接收和發出返回值的協程。接收和發出返回值的Python協程
以下是作者所說的 - 「如果在yield表達式中提供了值,協程可能會同時使用yield來接收和返回返回值。」
這裏是說明這樣一個例子:
def line_splitter(delimiter=None):
print("Ready to split")
result = None
while True:
line = (yield result)
result = line.split(delimiter)
而且筆者補充說, 在這種情況下,我們像以前一樣使用協程以同樣的方式。但是,現在調用 send()也會產生結果。例如:
>>> s = line_splitter(",")
>>> s.next()
Ready to split
>>> s.send("A,B,C")
['A', 'B', 'C' ]
>>> s.send("100,200,300")
['100', '200', '300']
我想知道上面的代碼是如何工作的。
感謝您的任何幫助。
http://stackoverflow.com/a/1756156/471899 – Alik
很難回答,除非你能告訴我們你不明白的部分。你對發電機方面有很好的瞭解嗎? –
我對發生器的瞭解是,它使用yield關鍵字並生成一系列用於迭代的值。 我無法理解上述代碼的工作。 – user3379333