Start here. This is the direct spoken answer to practice first.
Overview
Explains awaitable work, scheduled ownership, and eventual-result integration in asyncio.
Calling an async def function creates a coroutine object; it does not run the body by itself. Awaiting the coroutine runs it as part of the current task. An asyncio Task schedules a coroutine on the running event loop and owns its result, exception, or cancellation state. A Future is a lower-level awaitable placeholder for a result that will be supplied later, often by event-loop or library integration.