python2.6からwith文つかえる!
with文が便利.
例えば,openとかリソースを開いて閉じる作業の場合,こう書く
import sys if __name__ == '__main__': """ main section """ try: with open (sys.argv[1], 'r') as fp: for line in fp: sys.stdout.write (line) except IOError, inst: sys.stderr.write (str (inst) + '\n') sys.exit ()
with文のブロック内処理の開始前にopenの作るオブジェクトの__enter__メソッドを実行する.
そして,ブロック内処理の終了後,例外の有無に関わらず__end__メソッドを実行する.
上の実例の場合,__end__メソッド内部でcloseが呼ばれるので自分でcloseをする必要がない!
すばらしい.
しかも,自前でも__enter__と__end__を実装したクラスをつくれば,withに渡せる.
ほかにもスレッドのロック機構にも使われてるらしい.いいね!