Лямбды в Python не могут делать многое из того, что умеют обычные функции. В теле лямбда-выражения можно использовать только одно выражение, нельзя писать операторы (такие как a = b
, yield
, await
и т.д.), также нельзя добавлять аннотации типов или объявлять лямбду как async
.
Тем не менее, если очень нужно превратить лямбду в асинхронную функцию, можно использовать декоратор asyncio.coroutine
. Это было полезно до появления ключевого слова async
в Python 3.4, но в современном Python почти не применяется.
>>> f = asyncio.coroutine(lambda x: x ** 2)
>>> asyncio.get_event_loop().run_until_complete(f(12))
144
Разумеется, это всё равно не позволяет использовать
await
внутри лямбды.👉@BookPython
>>Click here to continue<<