本文目录导读:

Python 的 await 语法核心语法没有变化,但在不同 Python 版本中支持的功能和上下文有所扩展,以下是关键点:
核心语法不变
await 始终用于挂起协程的执行,直到等待的 awaitable 对象完成:
async def main():
result = await some_async_function()
return result
不同版本的变化
Python 3.5-3.6(初版)
await仅在async def函数内部可用- 只能等待协程、Future 或实现了
__await__的对象
Python 3.7+
- 将
asyncio提升为顶级关键字,但await语法不变 - 引入了
asyncio.run()简化事件循环启动
Python 3.8+(重要变化)
- 在交互式 REPL 中允许使用
await:# Python 3.8+ REPL >>> import asyncio >>> await asyncio.sleep(1) # 直接可用
- 无需再写
asyncio.run(...)在 REPL 中
Python 3.10+
- 更好的错误信息
- 异步上下文管理器和异步迭代器的改进
Python 3.11+(重大改进)
- 在 with 语句中可以使用 await(异步上下文管理器更流畅):
async with open_connection() as conn: data = conn.recv() - 更好的性能:async/await 开销显著降低
Python 3.12+
- 类型化 await:
typing模块对 awaitable 的支持增强 - 异常追踪改进
注意事项
# ❌ 旧写法(Python <3.8 不能在 module 级别使用)
await some_coro() # SyntaxError
# ✅ 新写法(Python 3.8+ 在交互环境可以)
# 但脚本中仍需 async 函数
async def main():
await some_coro()
| 版本 | 变化 |
|---|---|
| 5 | 引入 await 语法 |
| 8 | REPL 支持 await |
| 11 | 性能优化 |
| 12+ | 类型系统增强 |
核心用法没有根本变化,只是可用场景和性能在持续改进,如果你是从旧版本升级,主要注意 REPL 和性能变化即可。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播