contextmanager-async async with コンテキスト
最終更新:2026-09-22
contextmanager-async async with コンテキスト
async with は非同期コンテキストマネージャーで使用する:進入/退出の両方で非同期メソッドを await する。
| カテゴリ | キーワード/文 |
|---|---|
| 種類 | キーワード/文 |
| Python バージョン | 3.5+ |
📝 構文
async with expr [as var]:
block
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
Ctx
🏷️ 関連するキーワード/文
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Q`async with` と普通の `with` の違いは何ですか?
A`async with` は非同期コンテキストマネージャ用です:入退出で `__aenter__`/`__aexit__` の非同期メソッドを await します。普通の `with` は同期の `__enter__`/`__exit__` を呼びます。
Q普通の関数の中に `async with` を書けますか?
A書けません。`async with` は `async def` 関数の内部にしか書けません。普通の関数に書くと `SyntaxError: 'async with' outside async function` になります。
Q自分のクラスに `async with` を対応させるには?
A2つの非同期メソッドを実装します:`async def __aenter__(self)` は入った後のオブジェクトを返し、`async def __aexit__(self, exc_type, exc, tb)` は掃除を行います。`__aexit__` が `True` を返すと例外を飲み込み、`False` を返す(または返さない)と例外が伝搬し続けます。