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