我们以这样一段代码作为例子
def fun(): print("进入fun函数了") x = yield 100 print("在fun函数中的x:",x) yield "谢谢,你也快乐" f = fun() result = next(f) print(result) result2 = f.send("元宵节快乐") print("程序外面的result2:",result2)
运行结果
进入fun函数了 100 在fun函数中的x :元宵节快乐 程序外面的result2 :谢谢,你也快乐
解释
f = fun() 调用fun函数,控制台输出 “进入fun函数了”,执行到yield时等待next调用 result = next(f) yield继续执行,将100返回给result,函数挂起,此时x并没有被赋值 print(result) 控制台打印100 result2 = f.send("元宵节快乐") end方法将“元宵节快乐”发送至函数挂起之后的时刻,此时x被赋值为“元宵节快乐”,函数继续运行,在控制台打印“在fun函数中的x :元宵节快乐” ,函数继续运行,再次遇到yeild关键字,并将“谢谢,你也快乐”返回到send之后的时刻,此时result2被赋值为“谢谢,你也快乐”,函数执行完毕 print("程序外面的result2:",result2) 控制台打印“程序外面的result2 :谢谢,你也快乐”
讲的不对的地方欢迎来邮探讨 pighui233@163.com
原文:https://www.cnblogs.com/pighui/p/10388569.html