推荐书: Python开发最佳实践

python高级教程:[3]生成器方法send throw clos

分享时@该用户已经被封, 我就能回答你的问题奥!

这一篇接着讲Python的生成器,生成器总共有四个方法你可以看一下:next方法已经说过了,接下来说一下其余的三个方法。

  • send:用于传递参数,实现与生成器的交互,我们举一个例子,下面的函数dog代表一只狗。当程序运行到food=(yield)的时候就会被挂起,等待生成器调用send方法,这时候我调用d.send(u’骨头’),骨头就会被传递到food这个变量中,然后程序就说”我吃饱了”。仔细看一下下面的输出内容你就会明白。所以,send实际上是把yield变成了一个输入入口。
  • stop用于停止生成器,如果再stop之后调用next,就会引发StopIteration错误。
  • throw用于给生成器传递一个error,结合stop,我们可以做一些有意思的事情:
  • 根据上面的例子我们可以知道,实际上stop可以在生成器内部引发一个GeneratorExit错误,我们可以使用try…except GeneratorExit句型捕获该错误,然后做一些善后的事情。

  • 注意,在捕获GeneratorExit错误以后,你需要raise StopIteration错误,否则程序就没有终止的时候了。

转载请注明来自DataScience.

邮箱: 675495787@qq.com