November 2025
Intermediate to advanced
984 pages
16h 17m
Japanese
コンテキストマネージャは今や、サブルーチン自体と同じくらい重要になってきています。我々はコンテキストマネージャの表層しか見てこなかったのです。(中略)BASIC言語にも
with文はあり、その他の多くの言語もwith文を備えています。しかし、そのはたらきは言語ごとに異なり、いずれも底の浅い処理しか行ってはくれません。属性へのアクセスの際にドットを何度も書かずに済む程度で、初期化や最終処理は行われません。Pythonでのwithはとても広範な概念であり、たまたま同じ名前だからといって処理内容も同じだと考えるのは危険です†1。—— Raymond Hettinger
雄弁なPythonエバンジェリスト
[†1] PyCon US 2013の基調講演『What Makes Python Awesome』(https://fpy.li/18-1)より。with文については23分00秒から26分15秒の間に言及されています。
この章では、他の言語ではあまり見られず、それゆえにPythonでも見過ごされることの多い制御構造について解説します。具体的には以下の3つを取り上げます。
with文とコンテキストマネージャのプロトコルmatch/caseを使ったパターンマッチングfor文、while文、try文でのelse句with文を使うと一時的なコンテキストが用意され、最終的には適切に破棄されます。コンテキストはコンテキストマネージャの管理下に置かれます。エラーの防止や、定型的に繰り返されるコードの削減を期待でき、APIを安全かつ容易に利用できるようになります。ファイルを自動的に閉じるという目的の他にも、さまざまな用法がプログラマーたちによって考案されています。 ...
Read now
Unlock full access