在Python中,`yield`关键字用于定义生成器(generator)函数。生成器函数与普通函数的主要区别在于,它们在每次调用`__next__()`方法时执行,直到遇到`yield`语句,此时函数会暂停执行并返回`yield`后面的值。当下一次调用`__next__()`方法时,函数会从上次暂停的地方继续执行。
下面是一个简单的例子来说明如何使用`yield`:
def simple_generator():
yield 1
yield 2
yield 3
创建生成器对象
gen = simple_generator()
调用next()方法,执行到第一个yield
print(next(gen)) 输出:1
再次调用next()方法,执行到第二个yield
print(next(gen)) 输出:2
再次调用next()方法,执行到第三个yield
print(next(gen)) 输出:3
生成器函数也可以使用`send()`方法来接收外部传递的值:
def generator_with_send():
x = yield
print(f"Received: {x}")
创建生成器对象
gen = generator_with_send()
调用next()方法,执行到第一个yield,此时x为None
print(next(gen)) 输出:Received: None
调用send()方法,传递值2
print(next(gen, 2)) 输出:Received: 2
生成器非常适合用于处理大数据集或无限序列,因为它们允许你按需生成值,而不是一次性生成所有值,从而节省内存。