生成器
生成器是通过一个或多个yield表达式构成的函数,每一个生成器都是一个迭代器(但是迭代器不一定是生成器)。
如果一个函数包含yield关键字,这个函数就会变为一个生成器。
生成器并不会一次返回所有结果,而是每次遇到yield关键字后返回相应结果,并保留函数当前的运行状态,等待下一次的调用。
由于生成器也是一个迭代器,那么它就应该支持next方法来获取下一个值。
通过yield
来创建生成器
1 | def func(): |
通过列表来创建生成器
1 | (i for i in range(10)) |
next() 与 send(msg)
next()语句将恢复生成器执行,并直到下一个yield表达式处。
send()可以传递yield表达式的值进去
1 | >>> def func(): |