Python Glossary English

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Сообщить о неточности