python send方法详解
时间: 2023-11-08 22:58:34 浏览: 41
`send` 方法是 Python 协程中的一个重要方法,用于向协程发送数据并恢复协程的执行。
其语法如下:
```python
coroutine.send(value)
```
其中,`coroutine` 表示待恢复执行的协程对象,`value` 表示要发送给协程的数据。
使用 `send` 方法时,必须先启动协程,让其执行到第一个 `yield` 语句处。然后,使用 `send` 方法向协程发送数据,此时协程会从 `yield` 语句处恢复执行,并将 `value` 的值赋给相应的变量。协程执行到下一个 `yield` 语句处时停止,并将 `yield` 语句后面的表达式的值返回给调用方。如果协程没有遇到 `yield` 语句,那么 `send` 方法将会抛出 `StopIteration` 异常。
下面是一个简单的例子,演示了 `send` 方法的使用:
```python
async def coroutine():
while True:
x = yield
print(f"Received: {x}")
c = coroutine()
next(c) # 启动协程
c.send("Hello") # 发送数据,输出 "Received: Hello"
c.send("World") # 发送数据,输出 "Received: World"
```
在上面的例子中,协程 `coroutine` 中的 `yield` 语句用于接收数据,并将其打印出来。我们首先通过 `next` 方法启动协程,然后使用 `send` 方法向协程发送数据,协程会从 `yield` 语句处恢复执行,并打印出接收到的数据。