Effective Python 読んだ感想
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (4件) を見る
Python歴約1年の今、以下の2点を目的として読んだ
- 現状の知識整理
- Pythonic Thinkingについて学習
本書はその目的に沿う本で、今のタイミングで読むことができて良かった
以下、トピック毎に軽く感想
PEP8スタイルガイド
- 項目2 PEP8スタイルガイドに従う
Python始めた時に、最初にいいなと思ったのがPEP8(とThe Zen of Python)だった
本質から離れた箇所に体力を使わないのはとても良い
特にチーム開発において、ある程度統一したスタイルでコードを書くことは生産性の向上に繋がる
flake8とか、チェッカーを使うと更に幸せ。エディタでも検知できる仕組みが色々ある
リスト内包表記
- 項目7 mapやfilterの代わりにリスト内包表記を使う
- 項目8 リスト内包表記には、3つ以上の式を避ける
- 項目9 大きな内包表記にはジェネレーター式を考える
Pythonでもリスト内包表記が使用可能で、
最初は少し戸惑うかもしれないけれど、慣れればコードがシンプルになる
節度は守るべしで、そのバランス感覚についての話
イテレータ
イテレータプロトコル(__iter__メソッドの実装)が面白い
複数回呼び出されることを許容できるケースにあまり出くわさなそうではある
メタクラス
イマイチ理解しきれていなかったメタクラスだが、
具体的なケースでどのように使われるかが紹介されていて分かりやすい
実際どのように使われているのか気になって、GitHubで探してたら
例えばFlaskだと↓のように使われている
https://github.com/pallets/flask/blob/740c42217cb349ab4f03ecba37973ec0c9bed421/flask/views.py#L105-L120
ツール類
- 項目56 unittestですべてをテストする
- 項目57 pdbで対話的にデバッグすることを考える
- 項目58 最適化の前にプロファイル
- 項目59 メモリの使用とリークを理解するにはtracemallocを使う
Pythonの組み込みモジュールはデバッグ、テスト、最適化まで提供されている
言語仕様だけでなく、組み込みモジュールまで一貫して機能が揃えようとしていることにもPythonの思想を感じられて良い
他にもプログラム周りの組み込みモジュールについては第6章で取り上げられている
おわりに
全部取り上げると無駄に長編になってしまうのでこの辺で…
他にも様々な思想やTipsが取り上げらているが、どれもPythonicな考えが染み込んでいる
理解を深めるために別途手を動かしながら読み直したい。特に第5章