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

[cover photo]
  • 2016年01月 発行
  • 256ページ
  • ISBN978-4-87311-756-0
  • フォーマット Print PDF
  • 原書: Effective Python

オライリー・ジャパンで書籍を購入:
定価3,456円

Ebook Storeで電子版を購入:
価格2,765円

Scott Meyersによる人気シリーズ、「Effective Software Development」シリーズに待望のPythonバージョンが登場。シリーズの真骨頂である、効率的で優れたプログラムはどのように書けばよいのか、を指南。ベストプラクティス、ヒント、落とし穴の避け方や達人プログラマのコードなどを紹介し、効果的な優れたPythonプログラムを書くノウハウをまとめています。Pythonを知り尽くした著者が、より良いPythonコードを書くために何をすべきか、何をすべきでないか、なぜこれが良い方法なのかをPythonの流儀に従って教えてくれます。強力な機能を備えながらもシンプルで使いやすく、多くの開発者を惹きつけてやまないPythonの魅力と威力を体感できる一冊です。

関連書籍

Effective Debugging
Effective Modern C++
Pythonからはじめる数学入門
実践 Python 3
ハイパフォーマンスPython

目次
推薦の言葉

日本語版へ寄せて

まえがき

1章  Python流思考(Pythonic Thinking)
    項目 1:使っている Pythonのバージョンを知っておく
    項目 2:PEP 8スタイルガイドに従う
    項目 3:bytes, str, unicodeの違いを知っておく
    項目 4:複雑な式の代わりにヘルパー関数を書く
    項目 5:シーケンスをどのようにスライスするか知っておく
    項目 6:1つのスライスでは、 start, end, strideを使わない
    項目 7:mapやfilterの代わりにリスト内包表記を使う
    項目 8:リスト内包表記には、 3つ以上の式を避ける
    項目 9:大きな内包表記にはジェネレータ式を考える
    項目 10:rangeよりは enumerateにする
    項目 11:イテレータを並列に処理するには zipを使う
    項目 12:forとwhileループの後の elseブロックは使うのを避ける
    項目 13:try/except/else/finallyの各ブロックを活用する

2章 関数
    項目 14:Noneを返すよりは例外を選ぶ
    項目 15:クロージャが変数スコープとどう関わるかを知っておく
    項目 16:リストを返さずにジェネレータを返すことを考える
    項目 17:引数に対してイテレータを使うときには確実さを尊ぶ
    項目 18:可変長位置引数を使って、見た目をすっきりさせる
    項目 19:キーワード引数にオプションの振る舞いを与える
    項目 20:動的なデフォルト引数を指定するときには Noneとドキュメンテーション文字列を使う
    項目 21:キーワード専用引数で明確さを高める

3章 クラスと継承
    項目 22:辞書やタプルで記録管理するよりもヘルパークラスを使う
    項目 23:単純なインタフェースにはクラスの代わりに関数を使う
    項目 24:@classmethodポリモルフィズムを使ってオブジェクトをジェネリックに
    項目 25:親クラスを superを使って初期化する
    項目 26:多重継承は mix-inユーティリティクラスだけに使う
    項目 27:プライベート属性よりはパブリック属性が好ましい
    項目 28:カスタムコンテナ型は collections.abcを継承する

4章 メタクラスと属性
    項目 29:getやsetメソッドよりも素のままの属性を使う
    項目 30:属性をリファクタリングする代わりに @propertyを考える
    項目 31:再利用可能な @propertyメソッドにディスクリプタを使う
    項目 32:遅延属性には __getattr__, __getattribute__, __setattr__を使う
    項目 33:サブクラスをメタクラスで検証する
    項目 34:クラスの存在をメタクラスで登録する
    項目 35:クラス属性をメタクラスで注釈する

5章 並行性と並列性
    項目 36:subprocessを使って子プロセスを管理する
    項目 37:スレッドはブロッキング I/Oに使い、並列性に使うのは避ける
    項目 38:スレッドでのデータ競合を防ぐために Lockを使う
    項目 39:スレッド間の協調作業には Queueを使う
    項目 40:多くの関数を並行に実行するにはコルーチンを考える
    項目 41:本当の並列性のために concurrent.futuresを考える

6章 組み込みモジュール
    項目 42:functools.wrapsを使って関数デコレータを定義する
    項目 43:contextlibとwith文を try/finallyの代わりに考える
    項目 44:copyregでpickleを信頼できるようにする
    項目 45:ローカルクロックには timeではなく datetimeを使う
    項目 46:組み込みアルゴリズムとデータ構造を使う
    項目 47:精度が特に重要な場合は decimalを使う
    項目 48:コミュニティ作成モジュールをどこで見つけられるかを知っておく

7章 協働作業(コラボレーション)
    項目 49:すべての関数、クラス、モジュールについてドキュメンテーション文字列を書く
    項目 50:モジュールの構成にパッケージを用い、安定な APIを提供する
    項目 51:APIからの呼び出し元を隔離するために、ルート例外を定義する
    項目 52:循環依存をどのようにして止めるか知っておく
    項目 53:隔離された複製可能な依存関係のために仮想環境を使う

8章 本番運用準備
    項目 54:本番環境を構成するのにモジュールスコープのコードを考える
    項目 55:出力のデバッグには、 repr文字列を使う
    項目 56:unittestですべてをテストする
    項目 57:pdbで対話的にデバッグすることを考える
    項目 58:最適化の前にプロファイル
    項目 59:メモリの使用とリークを理解するには tracemallocを使う

訳者あとがき
参考文献

索引

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]