これまで私は、Pythonのwith文を「オブジェクト名を省略するための構文」だと思い込んでいました。 他の言語ではwithが省略用途で使われることが多いので、Pythonも同じだろうと自然に考えていたのです。
ところが実際には、Pythonのwith文はまったく別の目的で使われていました。 with文は、ファイルを開いたら閉じる、ロックを取得したら解放する、といった前後処理を自動で行うための仕組みだったのです。 コンテキストマネージャという仕組みで、__enter__() と __exit__() が呼ばれるようになっていると知って、ようやく腑に落ちました。
言われてみれば確かにそういう動きをしていたので、「なんか変だな」と感じていた理由がやっとわかりました。
Pythonはまだまだ知らないことが多いですが、こうして誤解が解けて理解が深まる瞬間はとても楽しいです。 引き続き、少しずつ学んでいきたいと思います。


人気ブログランキング ブログパーツ