python yield
时间: 2023-06-21 20:06:16 浏览: 85
在 Python 中,`yield` 是一个关键字,它用于定义一个生成器函数。生成器函数是一种特殊的函数,它可以暂停执行并返回一个值,然后再次从暂停的位置恢复执行。这个过程可以重复多次,直到函数执行结束。生成器函数通常用于需要返回大量数据的场景,但是一次性返回所有数据可能会导致内存溢出的情况。
当一个生成器函数被调用时,它并不会立即执行函数体,而是返回一个生成器对象。每次调用生成器对象的 `__next__()` 方法,生成器函数就会从上一次暂停的位置恢复执行,并在遇到 `yield` 关键字时返回一个值。当生成器函数执行完毕时,会抛出 `StopIteration` 异常,表示迭代结束。
下面是一个简单的示例,演示了如何使用 `yield` 定义一个生成器函数:
```
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(next(gen)) # 输出 1
print(next(gen)) # 输出 2
print(next(gen)) # 输出 3
```
在上面的示例中,`my_generator` 是一个生成器函数,它使用 `yield` 返回了三个值。当我们调用 `my_generator` 函数时,它并不会立即执行函数体,而是返回一个生成器对象 `gen`。接着我们通过调用 `next` 方法来遍历生成器对象,每次调用 `next` 方法都会从上一次暂停的位置继续执行,直到遇到 `yield` 关键字返回一个值。最终,当我们遍历完所有的值时,生成器函数会抛出 `StopIteration` 异常,表示迭代结束。
阅读全文