跳动探索网

📚Python进阶:聊聊yield的send魔法✨

导读 大家好!今天来聊聊Python中`yield`关键字的一个有趣特性——` send()`方法。如果你对生成器(generator)稍有了解,一定知道`yield`可以暂

大家好!今天来聊聊Python中`yield`关键字的一个有趣特性——`.send()`方法。如果你对生成器(generator)稍有了解,一定知道`yield`可以暂停函数并返回值,而`.send()`则能向生成器传入数据!💡

比如,定义一个简单的生成器:

```python

def counter():

print("First send value:")

x = yield 1

print(f"Got {x}")

y = yield x + 1

print(f"Got {y}")

```

运行时:

```python

f = counter()

next(f) 启动生成器

f.send(3) 发送3,并继续执行到下一个yield

输出:

First send value:

Got 3

4

```

注意事项👇:

1️⃣ `.send(None)`等价于`next(generator)`,但不能用`None`作为首次调用。

2️⃣ 如果生成器暂停在`yield`处,传入的数据会赋值给`yield`左侧的变量。

3️⃣ 如果生成器抛出异常,`.send()`也会被中断。

掌握它,你的代码将更灵活强大!🌟

Python Generator Yield Send