contextmanager-async async with 上下文
最后更新:2026-09-22
contextmanager-async async with 上下文
async with 在异步上下文管理器中使用:进入/退出都 await 异步方法。
| 分类 | 关键字与语句 |
|---|---|
| 类型 | 关键字与语句 |
| Python 版本 | 3.5+ |
📝 语法
async with expr [as var]:
block
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
Ctx
🏷️ 相关关键字与语句
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Qasync with 和普通 with 有什么区别?
Aasync with 用于异步上下文管理器:进入和退出时 await 的是 __aenter__ / __aexit__ 异步方法;普通 with 调用的是同步的 __enter__ / __exit__。
Qasync with 能写在普通函数里吗?
A不能,async with 只能出现在 async def 函数内部。在普通函数里写会报 SyntaxError: 'async with' outside async function。
Q自己的类怎么支持 async with?
A实现两个异步方法:async def __aenter__(self) 返回进入后的对象,async def __aexit__(self, exc_type, exc, tb) 做清理。__aexit__ 返回 True 表示吞掉异常,返回 False 或不返回则继续传播。