PythonPythonを使う上で、withステートメントは、やはり見逃せない機能の1つであると思います。Python2.5〜3.xまで網羅しているようにしたつもりです。基本まず、一番身近なファイル操作の例を載せておきます。print(f.read())これは、以下と同等です。open("...")print(f.read())f.close()withステートメントを使うと、withを抜けた時に、自動的にf.closeされます。asは必須ではありません。print(f.read())これも先ほどのコードと同等です。withに対応したクラスを作る使うだけでは理解も深まらないので、作る方も見てみましょう。withに渡すのは__enter__と__exit__の2つのメソッドを持ったクラスのインスタンスです。t.printHoge()出力initenterhogeexitwithステートメントに入る時にTest#__enter__が、出る時にTest#__exit__が呼ばれます。selfしているところがミソです。__exit__の引数は、with内部で例外が発生した時以外はNoneのようです*1。/var/log/shinTips複数のwith以下のように、複数のファイルを同時に開いて何かしたいケースが有るかもしれません。2.7以降ではカンマ区切りで複数指定することが可能です。2.7未満ではcontextlib.nestedを使う方法があるようです。...withステートメントから抜けるwithステートメントを途中で抜ける構文はありません*2。withを関数で括ってreturnする素直にif文を使って書くといった方法を使うしかないようです*3。以前こういう記事を書きました。»プロフィールid:s-shinプログラマブルな人間になりたい。(1)リンクヘルプはてなブログお知らせはてなブログをはじめよう!s-shinさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。