Python / ES6生成器也是协同程序吗?

时间:2015-08-08 10:29:31

标签: python generator ecmascript-6 coroutine

我对Python和ECMAScript中的生成器的理解是它们比普通生成器更强大。例如,两者都允许值通过next()传递回生成器,并且它们都允许从另一个生成器(Python中的yield from和ES6中的yield *)中产生,这两个不是&在发电机中需要#。

因此,鉴于这种扩展功能,生成器是否在Python和ES6中实现,所有意图和目的与协同程序相同?有什么不同吗?

1 个答案:

答案 0 :(得分:2)

来自yield from上的PEP 380

  

Python生成器是协程的一种形式,但它有一个限制,它只能屈服于它的直接调用者。

来自python docs on coroutines

  

协程是遵循某些约定的生成器。对于   文档目的,所有协同程序都应该用   @ asyncio.coroutine,但这不能严格执行。

发电机是一种有限的共同例程。对于ES2015发电机也应如此。