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` を返す(または返さない)と例外が伝搬し続けます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%