yeild关键字

在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
https://github.com/walter201230/Python/blob/master/Article/supplement/Python关键字yield.md

posted @ 2023-04-15 21:51  __username  阅读(10)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。