send()是Python中用于生成器的方法,它可以在生成器内部向yield语句发送一个值,并让生成器继续执行。与next()函数不同,send()方法可以将一个值传递给生成器内部,这个值会成为yield表达式的结果。
以下是一个简单的例子:
```python
def my_generator():
x = yield 1
y = yield x + 2
z = yield y + 3
gen = my_generator()
print(next(gen)) # 输出1
print(gen.send(10)) # 输出12
print(gen.send(20)) # 输出23
```
在这个例子中,my_generator()函数被定义为一个生成器,它包含三个yield语句。当我们调用next()函数来迭代生成器时,函数会执行到第一个yield语句,并返回1。下次调用send()方法时,我们向生成器内部发送了一个值10,这个值会成为x变量的值,并让函数从第一个yield语句之后继续执行。函数会执行到第二个yield语句,并返回x+2的结果12。接着我们再次调用send()方法,向生成器内部发送了一个值20,这个值会成为y变量的值,并让函数从第二个yield语句之后继续执行。函数会执行到第三个yield语句,并返回y+3的结果23。
需要注意的是,在第一次调用send()方法之前,必须先调用一次next()函数来启动生成器。另外,如果在生成器内部没有yield语句,调用send()方法会抛出TypeError异常。