『Effective Python』を読んだ

『Effective Python』を読んだ。
メインで扱っている言語がPHPとJavaScriptで、これらのコードの書き方の作法はわかっているがPythonのそれはわかっていない。
Pythonらしい書き方、行儀のよいPythonコードの書き方を学ぶためにこの本を読んだ。

よく、他の言語から入ってきた人が書いたコードで 「あーこれPHPじゃこんなやり方しないよなー。ちょっといけてねーなー」と思うことがよくあり、 自分の書いたPythonコードがそう思われたくない。
Pythonicな書き方を学ぶにはこの本がよい、と風の噂で聞いたので読んでみた。

effective_python

中級者・上級者向けの本であるためか、Pythonの文法・基本的な知識がないと読めない本である。
一番自分が知りたかったPythonicな書き方というものは最低限知れたのかなと思う。
最低限というのは、小さい単位でコードを分割したときの場合においてPythonicに書けそうだが、 大規模のコードだとどのようになるのか、どのような書き方がベストなのか、というのがイメージしづらかった。
このへんはDjangoで何かアプリを書いてみて、自分なりに噛み砕きながら理解していくしかなさそう。 Pythonでこの辺を記してある本をさがすか。

さて、この本の感想だが、Pythonを扱うならぜひ読んでおくべき本だと思う。
Pythonicな書き方について1章にわたって解説されている。
この章は必読に値する。

本の内容は以下のとおり。

1章 Python流思考(Pythonic Thinking)
2章 関数
3章 クラスと継承
4章 メタクラスと属性
5章 並行性と並列性
6章 組み込みモジュール
7章 協働作業(コラボレーション)
8章 本番運用準備

1章はもちろんのこと『2章 関数』『3章 クラスと継承』『4章 メタクラスと属性』『6章 組み込みモジュール』は読み応えがあった。
Pythonの良いところとして、メタクラスやデコレーターを使って既存のクラス・メソッドを変更せずに振る舞いを変えることができるのがとても良いと思っていて、それが4章と6章で言及されていて大変ためになった。

5章はPythonでより速度を出すには、マシンの性能をうまく使うには、ということを処理の並列化によって実現するにあたって注意すべきことが書いてあり、いまのところそれほど性能が求められるようなものを書く予定はないが、今後必ず役に立つと思う。
Pythonのパフォーマンスについては、オライリーから『ハイパフォーマンスPython』や『Cython - Cとの融合によるPythonの高速化』といった書籍がありいつか読んでみたい。