matobaの学んだことスマートフォン用の表示で見るmatobaの学んだこととあるPythonエンジニアのブログ。ソフトウェア開発、執筆活動、ライフログ。技術記事Pythonのコンテキストマネージャって何?って言われると、「withを使ってるあれ」みたいな答え方はできるんですが、以下のような質問は答えられませんでした。いうわけで、調べたことでも書きます。コンテキストマネージャって、なんのためにあるの?コンテキストマネージャって、どうやって実装するの?コンテキストマネージャって、何が必要なの?コンテキストマネージャって何?公式ドキュメントを見ると以下のように書いています。文の実行時にランタイムコンテキストを定義するオブジェクトです。文の実行時にランタイムコンテキストってなんなの?と思います。with文ってそもそも何?with文についてもう少し調べます。公式ドキュメントでは、withの説明はこちらにあります。セクションを参照してください)。?とりあえず、コンテキストマネージャを理解するためには、with文を理解する必要があって、with文を理解するためには、コンテキストマネージャを理解する必要があることがわかりました。with文の成り立ちを見るPythonのドキュメントだけでは、理解することができなかったので、次は、PEPを読みます。withのPEPがありました。www.python.org最初の方に以下の文があります。statements.ああ、毎回同じようなtry/finallyを書くのを止めるために、withを導入した、という背景があるんですね。次にこんな風に書いてあります。メソッドを実行するんですね。コンテキストマネージャを雑に実装して見るとりあえず、なんでも良いので、コンテキストマネージャを実装してみます。manager')これを実行してみます。managerexitなんか動いたようです。置き換えるものなので、コンテキストマネージャーの中でエラーが起きてもexitは実行されるんでしょう。error!確かに、exitが処理されています。contextlibを使うPythonでは、標準ライブラリとして、contextlibが提供されていました。実装するのは、悪手のように見えます。次はこちらを使って同じような処理を実装してみます。こちらの方が便利そうですね。methodこういう感じ。追記エキスパートPythonプログラミング改訂2版を読んでると、コンテキストマネージャについて、もう少し詳しく書いてました。18:30Pythonのコンテキストマネージャってなんなの?と思って調べた話Tweet関連記事2018-12-20djangoのformって結局なんなの?という疑問が解消されたのでformを解説しますあー、djangoのformってそういう役割なのかー、というのが自分...2018-09-30Linuxのしくみを学んでいる話Linuxのしくみ、と言う本を買って読んでるので、今日の学びのメ...2018-04-29Docker初心者のはじめの一歩Dockerを使うことになりました。はじめの一歩word2vecに興味があったので調べた。この記事は、そのメモです...2018-04-19サクッとロジスティック回帰を試したいロジスティック回帰を使う時に、何を見れば良い。djangoのadminコマンドをコードから呼ぶ。(30)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。