Python中yield是什么

Posted MrDoghead

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中yield是什么相关的知识,希望对你有一定的参考价值。

介绍

我们有时候会发现代码中return的地方,有用yield的,难道他们一样吗?其实,yield与return看起来很像,但实际上完全不同。

使用

def test():
    print("****start****")
    while 1:
        res = yield 1
        print("res:", res)
t = test() # 函数中有yield关键字,所以函数并不会真的执行,而是先得到一个生成器t
print(next(t)) # next让函数开始执行,打印start,然后把1返回给next(t),并把1打印出来,这时res还没赋值
print("*"*10) # 打印十个* 
print(next(t)) # 函数从res = yield开始执行,但是1已经被yield出去了,所以res实际上没有值,就是None,然后while重新循环,1被yield出去打印

# ****start****
# 1
# **********
# res:None
# 1

你绕出来了吗?

以上是关于Python中yield是什么的主要内容,如果未能解决你的问题,请参考以下文章

Python yield用法浅析(stackoverflow)

Python中yield的用法详解

Python异步IO之协程:从yield from到async的使用

yield-Python大牛必须掌握的高端语法

python生成器中yield和send分析

python中yield的用法及生成器的理解