yield 关键字是在学习python生成器(Generator)时遇到的,对于它及Generator至今我还不能很深入的理解,当前只是把所理解的知识作下记录,以便以后翻查。
yield关键字是用来定义生成器(Generator),其具体功能是可以当作return使用,从函数里返回一个值,其区别是使用yield返回之后,下次调用函数可以从上回yield返回的地址继续向下执行。
使用yield返回后,调用者实际是到了一个迭代器对象,迭代器的值就是返回值,通过调用该迭代器next()方法可恢复yield语句的执行环境继续向下执行,直至遇到下一个yield为止,如果遇不到yield,则会出现StopIteration错误提示。
1 def f(): 2 print ‘Hi, yield!‘ 3 yield 2 4 print ‘you can do it!‘ 5 yield 12 6 print ‘stop it now!‘
2 >>> y.next() 3 Hi, yield! 4 2 5 >>> y.next() 6 you can do it! 7 12 8 >>> y.next() 9 stop it now! 10 11 Traceback (most recent call last): 12 File "<pyshell#29>", line 1, in <module> 13 y.next() 14 StopIteration
对于 yield 的 send(msg) 和 next(),以及 throw() 和 close() 中断 Generator的相关知识,等在实际代码中运用到时再继续研究。
时间: 2024-10-13 01:05:32