Python 3.5+collectionsпонятие
collections.abc.Awaitable
collections.abc — протоколы
Протокол «можно await» (есть __await__).
Синтаксис
isinstance(obj, collections.abc.Awaitable)
Вызов async-функции ничего не запускает — он лишь создаёт корутину, и если её не дождаться, интерпретатор предупредит про coroutine was never awaited (потому в примере и стоит close()). Ждать корутину можно ровно один раз: повторный await по тому же объекту даст RuntimeError. Awaitable шире корутины — под него подходят также Task и Future, поэтому в аннотациях он уместнее, когда вам неважно, что именно ждут.
Примеры
import collections.abc as abc
async def f(): pass
c = f()
print(isinstance(c, abc.Awaitable)) # → True
c.close()
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности