我对Python和ECMAScript中的生成器的理解是它们比普通生成器更强大。例如,两者都允许值通过next()
传递回生成器,并且它们都允许从另一个生成器(Python中的yield from
和ES6中的yield *
)中产生,这两个不是&在发电机中需要#。
因此,鉴于这种扩展功能,生成器是否在Python和ES6中实现,所有意图和目的与协同程序相同?有什么不同吗?
答案 0 :(得分:2)
来自yield from
上的PEP 380:
Python生成器是协程的一种形式,但它有一个限制,它只能屈服于它的直接调用者。
协程是遵循某些约定的生成器。对于 文档目的,所有协同程序都应该用 @ asyncio.coroutine,但这不能严格执行。
发电机是一种有限的共同例程。对于ES2015发电机也应如此。