我正在阅读 Python Essential Reference,但我无法理解接收和发出返回值的协程。
这就是作者所说的 - “如果在 yield 表达式中提供了值,协程可以使用 yield 同时接收和发出返回值。”
下面是一个示例,说明了这一点:
def line_splitter(delimiter=None):
print("Ready to split")
result = None
while True:
line = (yield result)
result = line.split(delimiter)
Run Code Online (Sandbox Code Playgroud)
作者进一步补充说,在这种情况下,我们以与以前相同的方式使用协程。但是,现在对 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']
Run Code Online (Sandbox Code Playgroud)
我想知道上面的代码是如何工作的。
谢谢你的帮助。