Python 关键字 - yield

在Python中,yield关键字用于创建生成器函数。
生成器函数是一种特殊类型的函数,可以在执行过程中暂停和恢复。
当调用生成器函数时,它返回一个迭代器对象,可以用来迭代生成器产生的值。

💡 用法

yield关键字用于生成器函数的主体中,用于指定生成器应该返回的值。
每次遇到yield关键字时,生成器函数会暂停,并返回yield指定的值。
下次调用生成器函数时,它会从上次暂停的地方继续执行,直到遇到下一个yield语句。

✏️ 语法

python
def generator_function():
    ...
    yield value
    ...

在上面的代码中,generator_function是一个使用yield关键字指定生成器应该返回的值的生成器函数。
yield关键字后面跟着应该返回的值。

📘 示例

python
def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
print(next(fib))  # 输出: 0
print(next(fib))  # 输出: 1
print(next(fib))  # 输出: 1
print(next(fib))  # 输出: 2
print(next(fib))  # 输出: 3

在上面的代码中,我们定义了一个生成器函数fibonacci,用于生成斐波那契数列。
每次遇到yield语句时,当前的a值被返回,并且ab的值被更新以生成序列中的下一个值。
我们通过调用fibonacci函数创建了一个迭代器对象fib,然后使用next函数来迭代生成器产生的值。

⚠️ 注意

  • yield关键字只能在生成器函数内部使用。
  • 生成器函数在内存上效率高,因为它们会即时生成值,而不是将它们存储在内存中。
  • 生成器函数可以用于生成无限序列的值,因为它们可以在执行过程中暂停和恢复。