Bill Lubanovic著 O’REILLYの「入門 Python3」のまとめです。
1章 Pyの味
- 1.1 実世界でのPython
- 1.2 Pythonと他言語の比較
- 1.3 では、なぜPythonなのか
- 1.4 Pythonを避けるべきとき
- 1.5 Python 2 or Python 3
- 1.6 Pythonのインストール
- 1.7 Pythonの実行
- 1.7.1 対話型インタープリタの使い方
- 1.7.2 Pythonファイルの使い方
- 1.7.3 次は何か
- 1.8 Python公案
2章 Pyの成分:数値、文字列、変数
- 2.1 変数、名前、オブジェクト
- 2.2 数値
- 2.2.1 整数
- 2.2.2 優先順位
- 2.2.3 基数
- 2.2.4 型の変換
- 2.2.5 intはどれくらい大きいのか
- 2.2.6 浮動小数点
- 2.2.7 数学関数
- 2.3 文字列
- 2.3.1 クォートを使った作成
- 2.3.2 str()を使った型変換
- 2.3.3 \によるエスケープ
- 2.3.4 +による連結
- 2.3.5 *による繰り返し
- 2.3.6 []による文字の抽出
- 2.3.7 [start:end:step]によるスライス
- 2.3.8 len()による長さの取得
- 2.3.9 split()による分解
- 2.3.10 join()による結合
- 2.3.11 多彩な文字列操作
- 2.3.12 大文字と小文字の区別、配置
- 2.3.13 replace()による置換
- 2.3.14 その他の文字列操作関数
3章 Pyの具:リスト、タプル、辞書、集合
- 3.1 リストとタプル
- 3.2 リスト
- 3.2.1 []またはlist()による作成
- 3.2.2 list()によるほかのデータ型からリストへの変換
- 3.2.3 [offset]を使った要素の取り出し
- 3.2.4 リストのリスト
- 3.2.5 [offset]による要素の書き換え
- 3.2.6 オフセットの範囲を指定したスライスによるサブシーケンスの取り出し
- 3.2.7 append()による末尾への要素の追加
- 3.2.8 extend()または+=を使ったリストの結合
- 3.2.9 insert()によるオフセットを指定した要素の追加
- 3.2.10 delによる指定したオフセットの要素の削除
- 3.2.11 remove()による値に基づく要素の削除
- 3.2.12 pop()でオフセットを指定して要素を取り出し、削除する方法
- 3.2.13 index()により要素の値から要素のオフセットを知る方法
- 3.2.14 inを使った値の有無のテスト
- 3.2.15 count()を使った値の個数の計算
- 3.2.16 join()による文字列への変換
- 3.2.17 sort()による要素の並べ替え
- 3.2.18 len()による長さの取得
- 3.2.19 =による代入とcopy()によるコピー
- 3.3 タプル
- 3.3.1 ()を使ったタプルの作成
- 3.3.2 タプルとリストの比較
- 3.4 辞書
- 3.4.1 {}による作成
- 3.4.2 dict()を使った作成
- 3.4.3 [key]による要素の追加、変更
- 3.4.4 update()による辞書の結合
- 3.4.5 delによる指定したキーを持つ要素の削除
- 3.4.6 clear()のよるすべての要素の削除
- 3.4.7 inを使ったキーの有無のテスト
- 3.4.8 [key]による要素の追加
- 3.4.9 keys()によるすべてのキーの取得
- 3.4.10 values()によるすべての値の取得
- 3.4.11 items()によるすてのキー/値ペアの取得
- 3.4.12 =による代入とcopy()によるコピー
- 3.5 集合
- 3.5.1 set()による作成
- 3.5.2 set()によるほかのデータ型から集合への変換
- 3.5.3 inを使った値の有無のテスト
- 3.5.4 組み合わせと演算
- 3.6 データ構造の比較
- 3.7 もっと大きいデータ構造
4章 Pyの皮:コード構造
- 4.1 #によるコメント
- 4.2 \による行の継続
- 4.3 if、elif、elseによる比較
- 4.3.1 Trueとは何か
- 4.4 whileによる反復処理
- 4.4.1 while-breakによるループ中止
- 4.4.2 while-continueによる次のイテレーションの開始
- 4.4.3 while-elseによるbreakチェック
- 4.5 forによる反復処理
- 4.5.1 for-breakによる中止
- 4.5.2 for-continueによる次のイテレーションの開始
- 4.5.3 for-elseによるbreakのチェック
- 4.5.4 zip()を使った複数のシーケンスの反復処理
- 4.5.5 range()による数値シーケンスの生成
- 4.5.6 その他のイテレータ
- 4.6 内包表記
- 4.6.1 リスト内包表記
- 4.6.2 辞書包括表現
- 4.6.3 集合内包表記
- 4.6.4 ジェネレータ内包表記
- 4.7 関数
- 4.7.1 位置引数
- 4.7.2 キーワード引数
- 4.7.3 デフォルト引数値の指定
- 4.7.4 *による位置引数のタプル化
- 4.7.5 **によるキーワード引数の辞書化
- 4.7.6 docstring
- 4.7.7 一人前のオブジェクトとしての関数
- 4.7.8 関数内関数
- 4.7.9 クロージャ
- 4.7.10 無名関数:ラムダ関数
- 4.8 ジェネレータ
- 4.9 デコレータ
- 4.10 名前空間とスコープ
- 4.10.1 名前のなかの_と_ _
- 4.11 エラー処理とtry、except
- 4.12 独自例外の作成
5章 Pyの化粧箱:モジュール、パッケージ、プログラム
- 5.1 スタンドアローンプログラム
- 5.2 コマンドライン引数
- 5.3 モジュールとimport文
- 5.3.1 モジュールのインポート
- 5.3.2 別名によるモジュールのインポート
- 5.3.3 必要なものだけをインポートする方法
- 5.3.4 モジュールのサーチパス
- 5.4 パッケージ
- 5.5 Python標準ライブラリ
- 5.5.1 setdefault()とdefaultdict()による存在しないキーの処理
- 5.5.2 Counter()による要素数の計算
- 5.5.3 OrderedDict()によるキー順のソート
- 5.5.4 スタック + キュー = デック
- 5.5.5 itertoolsによるコード構造の反復処理
- 5.5.6 pprint()によるきれいな表示
- 5.6 バッテリー補充:ほかのPythonコードの入手方法
6章 オブジェクトとクラス
- 6.1 オブジェクトとは何か
- 6.2 classによるクラス定義
- 6.3 継承
- 6.4 メソッドのオーバーライド
- 6.5 メソッドの追加
- 6.6 superによる親への支援要請
- 6.7 selfによる自己弁護
- 6.8 プロパティによる属性値の取得、設定
- 6.9 非公開属性のための名前のマングリング
- 6.10 メソッドのタイプ
- 6.11 ダックタイピング
- 6.12 特殊メソッド
- 6.13 コンポジション
- 6.14 モジュールではなくクラスとオブジェクトを使うべきなのはいつか
- 6.14.1 名前付きタプル
7章 プロのようにデータを操る
- 7.1 文字列
- 7.1.1 Unicode
- 7.1.1.1 Python3のUnicode文字列
- 7.1.1.2 UTF-8によるエンコード、デコード
- 7.1.1.3 エンコーディング
- 7.1.1.4 デコーディング
- 7.1.1.5 詳しく学びたい人のために
- 7.1.2 書式指定
- 7.1.2.1 %を使った古いスタイル
- 7.1.2.2 {}と書式指定を使った新しいスタイル
- 7.1.3 正規表現とのマッチング
- 7.1.3.1 match()による正確なマッチ
- 7.1.3.2 search()による最初のマッチ
- 7.1.3.3 findall()によるすべてのマッチの検索
- 7.1.3.4 split()によるマッチを利用した分割
- 7.1.3.5 sub()によるマッチした部分の置換
- 7.1.3.6 パターンの特殊文字
- 7.1.3.7 パターン:メタ文字
- 7.1.3.8 パターン:マッチした文字列の出力の指定
- 7.2 バイナリデータ
- 7.2.1 バイトとバイト列
- 7.2.2 structによるバイナリデータの変換
- 7.2.3 その他のバイナリデータツール
- 7.2.4 binasciiによるバイト/文字列の変換
- 7.2.5 ビット演算子
8章 データの行き先
- 8.1 ファイル入出力
- 8.1.1 write()によるテキストファイルへの書き込み
- 8.1.2 read()、readline()、readlines()によるテキストファイルの読み出し
- 8.1.3 write()によるバイナリファイルの書き込み
- 8.1.4 read()によるバイナリファイルの読み出し
- 8.1.5 withによるファイルの自動的なクローズ
- 8.1.6 seek()による位置の変更
- 8.2 構造化されたテキストファイル
- 8.2.1 CSV
- 8.2.2 XML
- 8.2.3 HTML
- 8.2.4 JSON
- 8.2.5 YAML
- 8.2.6 セキュリティについての注意
- 8.2.7 設定ファイル
- 8.2.8 その他のデータ交換形式
- 8.2.9 pickleによるシリアライズ
- 8.3 構造化されたバイナリファイル
- 8.3.1 スプレッドシート
- 8.3.2 HDF5
- 8.4 リレーショナルデータベース
- 8.4.1 SQL
- 8.4.2 DB-API
- 8.4.3 SQLite
- 8.4.4 MySQL
- 8.4.5 PostgreSQL
- 8.4.6 SQLAlchemy
- 8.5 NoSQL
- 8.5.1 dbmファミリ
- 8.5.2 memcached
- 8.5.3 Redis
- 8.5.4 その他のNoSQL
- 8.6 フルテキストデータベース
9章 ウェブを解きほぐす
- 9.1 ウェブクライアント
- 9.1.1 telnetによるテスト
- 9.1.2 Pythonの標準ウェブライブラリ
- 9.1.3 標準ライブラリを超えて
- 9.2 ウェブサーバー
- 9.2.1 Pythonによるもっとも単純なウェブサーバー
- 9.2.2 WSGI
- 9.2.3 フレームワーク
- 9.2.4 Bottle
- 9.2.5 Flash
- 9.2.6 Python以外のウェブサーバー
- 9.2.7 その他のフレームワーク
- 9.3 ウェブサービスとオートメーション
- 9.3.1 webbrowserモジュール
- 9.3.2 Web APIと REST
- 9.3.3 JSON
- 9.3.4 クロールとスクレイピング
- 9.3.5 BeautifulSoupによるHTMLのスクレイピング
10章 システム
- 10.1 ファイル
- 10.1.1 open()による作成
- 10.1.2 exists()によるファイルが存在することのチェック
- 10.1.3 isfile()によるファイルタイプのチェック
- 10.1.4 copy()によるコピー
- 10.1.5 rename()によるファイル名の変更
- 10.1.6 link()、symlink()によるリンク作成
- 10.1.7 chmod()によるパーミッションの変更
- 10.1.8 chown()によるオーナーの変更
- 10.1.9 abspath()によるパス名の取得
- 10.1.10 realpath()によるシンボリックリンクパス名の取得
- 10.1.11 remove()によるファイルの削除
- 10.2 ディレクトリ
- 10.2.1 mkdir()による作成
- 10.2.2 rmdir()による削除
- 10.2.3 listdir()による内容リストの作成
- 10.2.4 chdir()によるカレントディレクトリの変更
- 10.2.5 glob()によるパターンマッチするファイルリストの作成
- 10.3 プログラムとプロセス
- 10.3.1 subprocessによるプロセスの作成
- 10.3.2 multiprocessingによるプロセスの作成
- 10.3.3 terminate()によるプロセスの強制終了
- 10.4 カレンダーとクロック
- 10.4.1 datetimeモジュール
- 10.4.2 timeモジュールの使い方
- 10.4.3 日時の読み書き
- 10.4.4 代替モジュール
11章 並列処理とネットワーク
- 11.1 並行処理
- 11.1.1 キュー
- 11.1.2 プロセス
- 11.1.3 スレッド
- 11.1.4 グリーンスレッドとgevent
- 11.1.5 twisted
- 11.1.6 asyncio
- 11.1.7 Redis
- 11.2 ネットワーク
- 11.2.1 パターン
- 11.2.2 パブリッシュ/サブスクライブモデル
- 11.2.3 TCP/IP
- 11.2.4 ソケット
- 11.2.5 ZeroMQ
- 11.2.6 Scapy
- 11.2.7 インターネットサービス
- 11.2.8 ウェブサービスとAPI
- 11.2.9 リモート処理
- 11.2.10 ビッグデータとMapReduce
- 11.2.11 クラウドでの処理
12章 パイソニスタになろう
- 12.1 プログラミングについて
- 12.2 Pythonコードを見つけてこよう
- 12.3 パッケージのインストール
- 12.4 IDE(統合開発環境)
- 12.5 名前とドキュメント
- 12.6 コードのテスト
- 12.6.1 pyline、pyflakes、pep8によるチェック
- 12.6.2 unittestによるテスト
- 12.6.3 doctestによるテスト
- 12.6.4 noseによるテスト
- 12.6.5 その他のテストフレームワーク
- 12.6.6 継続的インテグレーション
- 12.6.7 Pythonコードのデバッグ
- 12.8 pdbによるデバッグ
- 12.9 エラーメッセージのロギング
- 12.10 コードの最適化
- 12.10.1 実行時間の計測
- 12.10.2 アルゴリズムとデータ構造
- 12.10.3 Cython、NumPy、Cエクステンション
- 12.10.4 PyPy
- 12.11 ソース管理
- 12.11.1 Mercurial
- 12.11.2 Git
- 12.12 本書のサンプルクローニング
- 12.13 さらに学習を深めるために
- 12.13.1 書籍
- 12.13.2 ウェブサイト
- 12.13.3 グループ
- 12.13.4 カンファレンス
- 12.14 これからのお楽しみ
付録A Pyアート
付録B ビジネス現場でのPy
付録C 科学におけるPy
付録D Python 3のインストール
参考: