Fluent Pythonを読んだ

Fluent Python ―Pythonicな思考とコーディング手法

Fluent Python ―Pythonicな思考とコーディング手法

ちょいちょいPythonのコードを書くことが出てきたので、ちゃんとした使い方を学ぶために読んでみた。Pythonic にオレはなる!

目次 を見るとわかるのだけど、データ構造、関数、オブジェクト、制御構造、メタプログラミングと言語の機能を広く深く取り扱っていて、Pythonをしっかり理解するという目的にはぴったりだった。Pythonの基本文法は抑えてるのが前提になっているので、初学者は入門 Python 3あたりを読んでおくと良いと思う。

この本が良いのは、各章ごとに参考文献がかなり充実している点だ。章の終わりに油断していると何ページも資料の紹介が続いてびっくりする。各トピックについて本書の内容だけでもよく説明されているのだが、さらに踏み込んで調べられるように、ドキュメントや書籍、役に立つ記事をコメント付きで紹介してくれている。ときにはフォーラムやカンファレンスでの発表へのリファレンスもあり、コミュニティがどこでも盛り上がっているのかも自ずと伝わってくる。著者がPythonコミュニティで長年活躍されているなかで得られた知見を、効率良く摂取できる本になっている。

また、Pythonの様々な言語機能の実現メカニズムを学ぶことを通して、Pythonの設計思想全体を学べる構成になっているのも良い。例えば、抽象基底クラスを実装しているかどうかは、isinstance関数を用いてチェックできるのだが、これはデフォルトでは継承関係によってチェックされる。しかし、実は特殊メソッドである __instancecheck__ の実装により振る舞いをオーバーライドすることで、特定のメソッドを実装していることで実質的に同じクラスとみなして良いかをチェックできるようになっている。これはPythonがもともと持つダックタイピングの考え方を、Python的特殊メソッドを用いて導入していたりするわけで、なかなか面白い。機能ごとに、こういう実装パターンを学んでいくことで、自ずとPythonicな考え方がみについてくる(ような気がする)。

原著がPython3.4あたりベースなのでちょっと古いのには注意したい。最近のPythonだったら f stringやasync awaitなど、紹介されている機能のより良い代替手段があったりする。

とにかくページが多く読むのは大変なのだけど、上記のようにPython的考え方を密度高く学べるので読んで損はないと思う。加えて著者の熱量が高く、そこらかしこで良いことを教えてくれるので、Pythonの話題にかぎらずかっこいいハッカーの考え方を盗める良い本だと思う。