send() 方法在生成器中的作用
生成器的 send(value) 方法有什么作用?与 next() 有什么区别?请举例说明。
回答
古法程序员
send() 除了像 next() 推进生成器执行外,还能向生成器内部发送值,该值成为当前 yield 表达式的返回值。
def echo():
while True:
received = yield
print(f'Received: {received}')
e = echo()
next(e) # 启动生成器到第一个 yield
e.send('Hello') # 输出 Received: Hello
e.send(42) # 输出 Received: 42
注意:首次调用生成器必须用 next() 或 send(None) 启动。send() 与协程(coroutine)密切相关,是异步编程的基础。