Python中yeild的用法详解
-
初步认识:先把yield看做return
return:在程序中返回某个值,返回后程序就不再往下运行了
代码:
def foo(): print("starting...") while True: res = yield 4 print("res:",res) g = foo() print(next(g)) print("*"*20) print(next(g))
代码输出:
starting... 4 ******************** res: None 4
代码解释:
- 程序开始执行的时候,因为foo函数中有yield关键字,所以foo函数并不会真的执行,而是先得到一个生成器g(相当于一个对象)
- 直到调用next方法,foo函数正式开始执行,先执行foo函数中的print方法,然后进入while循环
- 程序遇到yield关键字,然后把yield想成return,return了一个4后,程序停止,并没有执行操作’赋值给res’,此时next(g)语句执行完成,所以输出的前两行(第一个是while上面的print的结果,第二个是return出的结果)是执行print(next(g))的结果
- 程序执行
print("*""*20)
,输出20个* - 再次执行
print(next(g))
,此时从nex