1. yield
yield
是 Python 中用于定义生成器函数的关键字。生成器函数是一种特殊的函数,它可以暂停执行并保存当前的状态,然后在需要时恢复执行,从而生成一个序列。
当一个函数包含 yield
语句时,它将变成一个生成器函数。每次调用生成器函数时,它会返回一个生成器对象,而不是立即执行函数体内的代码。当你对生成器对象调用 next()
函数时,生成器函数将从上次暂停的位置继续执行,直到再次遇到 yield
语句或者函数结束。
下面是一个简单的示例,演示了 yield
的用法:
def my_generator():
yield 1
print("1111")
yield 2
print("2222")
yield 3
print("3333")
# 调用生成器函数,返回生成器对象
gen = my_generator()
# 通过调用 next() 函数获取生成器对象的值
print(next(gen)) # 输出: 1
print("------------------")
print(next(gen)) # 输出: 2
print("------------------")
print(next(gen)) # 输出: 3
print("------------------")
#输出:
#1
#------------------
#1111
#2
#------------------
#2222
#3
#------------------
#3333
在这个示例中,my_generator
是一个生成器函数,它包含了三个 yield
语句。每次调用 next(gen)
时,生成器函数会执行到下一个 yield
语句处,并将 yield
后面的值返回给调用者。因此,连续调用 next(gen)
三次将依次输出 1、2 和 3。
在上述例子中,print(next(gen)) # 输出: 3
执行之后函数my_generator
已经执行到了最后一行,如果此时再使用一次print(next(gen))
将会报错:StopIteration