Effective Python 読んだ

Python入門週間の続きでEffective Pythonをサラリと読んだ。

Effective Python ―Pythonプログラムを改良する59項目

Effective Python ―Pythonプログラムを改良する59項目

自分がおもしろいと思ったのは、入門 Python3にはあまり載っていない込み入ったPythonの機能の紹介ので、特に "4章 メタクラスと属性" では、Pythonのオブジェクトシステムの凝った使い方を知ることができて良かった。自分のコードでメタクラスを積極的に使うのは嫌な予感がするので、あまりないかなと思うものの、ライブラリコードを読むときなどには役立ちそう。

他にも、"6章 組み込みモジュール" では、デコレータやコンテキストオブジェクトの定義の仕方やコンテキスト、日付周りのイディオムや、"7章 協働作業(コラボレーション)"では循環参照の問題についてなど、実際のコードを書くときに役立ちそうな話題が総ざらいにできる内容で自分としては満足できた。

一方、サンプルコードが微妙に理解しづらくて、丁寧に読み込まないとよくわからない部分がちょいちょいあったように感じた(もちろん、自分の理解力の問題もあるとは思うものの)。あと、コードの設計の仕方に疑問を感じるところも少しあって("項目 34:クラスの存在をメタクラスで登録する", " 項目 50:モジュールの構成にパッケージを用い、安定な APIを提供する", 例外が好きそうなところ)、本の内容をそのまま鵜呑みにせずに、やり方の一つとして覚えておくのが良さそうかと思った。

総じては、Pythonのよくあるイディオムがコンパクトにまとまっていて良かったと思う。Python流のやり方が少しづつわかるようになってきた。この本の内容が実際のPythonコードではどれくらい採用されているのかは、特に知らないという状態なので、もう少し世の中のPythonのコードを読んだり、オフィシャルのドキュメントを眺めたりすると良さそうだった。