在Python中,yield
是一种关键字,用于定义生成器函数,生成器函数可以像普通函数一样被调用,但是它们可以使用yield
语句暂停函数的执行并在后续调用中恢复它。
示例1
下面是一个简单的例子,演示了如何使用yield
关键字定义一个生成器函数:
def my_generator():
yield 1
yield 2
yield 3
在上面的代码中,my_generator()
是一个生成器函数,它包含三个yield
语句,分别生成数字1、2和3。当函数被调用时,它并不会立即执行,而是返回一个生成器对象。然后,每次调用生成器对象的__next__()
方法时,函数会从上次暂停的地方恢复执行,并在下一个yield
语句处再次暂停,返回生成器值。
例如:
gen = my_generator()
print(next(gen)) # 输出 1
print(next(gen)) # 输出 2
print(next(gen)) # 输出 3
此外,生成器函数还可以使用yield from
语句来将控制权转移给另一个可迭代对象。这样做可以简化生成器函数的代码,避免嵌套使用多个循环语句。
例如:
def my_generator():
yield from [1, 2, 3]
在上面的代码中,yield from
语句会将控制权传递给列表[1, 2, 3]
,这个列表中的元素会被逐个生成。因此,调用my_generator()
遍历后 会生成数字1、2和3。
示例2
def foo():
print("starting...")
while True:
res = yield 4
print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(next(g))
output:
starting...
4
********************
res: None
4
可参考:
https://blog.csdn.net/mieleizhi0522/article/details/82142856
标签:函数,generator,生成器,yield,next,关键字,yeild,print From: https://www.cnblogs.com/code3/p/17322005.html