Поддержка сопрограмм в Lua обеспечивается функциями в таблице coroutine
, в основном create
, resume
и yield
, Разработчики описывают эти сопрограммы как stackful, первоклассный и асимметричный.
Coroutines также доступны в Python, используя расширенные генераторы (и yield from
) или, добавлено в версии 3.5, async
и await
.
Как сопоставлять сопрограммы в Python по сравнению с Lua? Являются ли они стекловидными, первоклассными и асимметричными?
Почему Python требует так много конструкций (async def
, async with
, async for
, асинхронных понятий,...) для сопрограммы, в то время как Lua может предоставить им только три встроенные функции?