python生成器中send和yield的区别是什么
时间: 2023-12-30 13:05:36 浏览: 115
Python生成器next方法和send方法区别详解
`yield`和`send`都是用来实现Python生成器的关键字。它们的区别在于:
- `yield`用于从生成器函数中产出一个值并暂停执行,等待下一次迭代时再继续执行。例如:
```python
def my_gen():
yield 1
yield 2
yield 3
for i in my_gen():
print(i)
```
输出:
```
1
2
3
```
- `send`用于向生成器函数中发送一个值并恢复执行。它与`yield`的区别在于,`yield`只能产出值,而`send`既可以产出值也可以向生成器函数中传递一个值。例如:
```python
def my_gen():
x = yield
print(x)
y = yield
print(y)
g = my_gen()
next(g)
g.send(1)
g.send(2)
```
输出:
```
1
2
```
需要注意的是,第一次调用生成器函数时必须使用`next`函数,因为在第一次调用时,生成器函数还没有执行到第一个`yield`语句,需要先执行到那里才能暂停。
阅读全文