Python知识巩固(生成器)
- 生成器是一种特殊的迭代器。没有 iter,next方法,甚至不是一个类,只靠yield
- 如果一个函数汇总有 yield 那么就不是一个函数,变成了一个生成器的模板。本来的调用函数就变成了创建一个生成器对象。
当你在使用它时,第一次从头开始执行到yield暂停;之后它不会从函数的开头开始执行,会从yield下面的语句开始执行,再执行到yield暂停 - 如果函数有返回值,可以在最后产生异常的时候捕获
- 也可以用 send 来启动生成器,但send不能作为第一次使用,应该使用next,因为send(xx) 传入的参数 就是 yield,所以可以通过send传入的参数修改过程,但不管是next还是send 出来的值都是 yield 后面的值。
比如 ret = yield a
send("哈哈")
ret = "哈哈"