初めてのPython 第3版

[cover photo]
TOPICS
Programming , Python
発行年月日
PRINT LENGTH
808
ISBN
978-4-87311-393-7
原書
Learning Python, Third Edition
FORMAT
Print PDF
Ebook
5,060円
Ebookを購入する
Print
5,060円

Python(パイソン)は世界中で広く使用されているオブジェクト指向言語で、スタンドアロンプログラムにも、様々な種類のスクリプトにも利用できます。豊富な機能を備えている一方で、非常に使いやすく、無料で入手できる、ポータブルである、といった特徴も備えています。本書は、プログラミングそのものがはじめての人から、他の言語で経験を積んでいる人まで、どちらの人にもPythonという言語の基本を比較的短い時間で学べるように作られています。本書を読めば、どのような種類のアプリケーションを作るにしても、必要な知識や技術が十分に身に付くようになっています。第3版はPython言語の変化への対応を中心に改訂され、Python 3.0を含めた新しいバージョンでの変更点についての解説を加えるとともに、将来新しいバージョンへ移行する際に役立つ情報も盛り込みました。Pythonの基礎を余すところなく解説するPython入門書の決定版です。

目次

はじめに

I部 Pythonの基礎知識

1章 PythonについてのQ&A
    1.1 Pythonを使うメリットは何ですか?
        1.1.1 ソフトウェアのクオリティ
        1.1.2 生産性の高さ
    1.2 Pythonはスクリプト言語なのですか?
    1.3 Pythonの欠点は何ですか?
    1.4 Pythonのユーザ数はどのくらいですか? また、どんな人がPythonを使っているのですか?
    1.5 Pythonを使うとどんなことができるのですか?
        1.5.1 システムプログラミング
        1.5.2 GUI
        1.5.3 インターネットスクリプティング
        1.5.4 コンポーネントの統合
        1.5.5 データベースプログラミング
        1.5.6 ラピッドプロトタイピング
        1.5.7 数値計算(科学研究向け)プログラミング
        1.5.8 ゲーム、画像処理、AI、XML、その他
    1.6 Pythonの技術的な長所は何ですか?
        1.6.1 オブジェクト指向
        1.6.2 フリー
        1.6.3 ポータブル
        1.6.4 高機能
        1.6.5 他言語との連携が容易
        1.6.6 使いやすい
        1.6.7 学習しやすい
        1.6.8 モンティ・パイソンとの関係
    1.7 他言語とPythonの比較
    1.8 1章のまとめ
 1章の練習問題

2章 Pythonプログラムの実行
    2.1 Pythonインタプリタ
    2.2 プログラムの実行
        2.2.1 プログラマの視点
        2.2.2 Pythonインタプリタの視点
    2.3 実行モデルのバリエーション
        2.3.1 Pythonシステムの種類
        2.3.2 実行最適化ツール
        2.3.3 フローズンバイナリ
        2.3.4 今後の予測
    2.4 2章のまとめ
 2章の練習問題

3章 プログラムの起動方法
    3.1 対話型プログラミング
        3.1.1 対話型プロンプト利用上の注意
    3.2 プログラム(モジュール)ファイル
        3.2.1 システムのコマンドラインを使用してPythonプログラムを実行する際の注意事項
        3.2.2 UNIXの実行可能スクリプト
    3.3 ファイルアイコンのクリック
        3.3.1 アイコンクリックによるプログラムの起動
        3.3.2 raw_input関数
        3.3.3 アイコンクリックによる起動のその他の問題点
    3.4 モジュールのインポートとリロード
        3.4.1 モジュールの属性
        3.4.2 インポート、リロードだけに頼るのは危険
    3.5 IDLEユーザインタフェース
        3.5.1 IDLEの基礎
        3.5.2 IDLEの使用に関する注意事項
        3.5.3 IDLEの高度なツール
    3.6 IDLE以外のIDE
    3.7 他の言語のプログラムへの組み込み
    3.8 フローズンバイナリ
    3.9 テキストエディタによるプログラムの起動
    3.10 その他の起動方法
    3.11 今後の可能性
    3.12 起動方法の選択
    3.13 3章のまとめ
 3章の練習問題
 I部のまとめ演習

II部 ビルトインオブジェクト
 
4章 Pythonのビルトインオブジェクト
    4.1 ビルトインオブジェクト
        4.1.1 ビルトインオブジェクトの型
    4.2 数値
    4.3 文字列
        4.3.1 シーケンスの操作
        4.3.2 不変性
        4.3.3 文字列に固有のメソッド
        4.3.4 ヘルプ
        4.3.5 文字列の作り方のバリエーション
        4.3.6 パターンマッチング
    4.4 リスト
        4.4.1 シーケンス操作
        4.4.2 リストに固有のメソッド
        4.4.3 要素の存在チェック
        4.4.4 ネスト
        4.4.5 リスト内包表記
    4.5 ディクショナリ
        4.5.1 写像の操作
        4.5.2 ネスト
        4.5.3 キーのソート:forループ
        4.5.4 反復処理と最適化
        4.5.5 存在しないキー:ifテスト
    4.6 タプル
        4.6.1 なぜタプルが必要なのか
    4.7 ファイル
        4.7.1 ファイル関連ツール
    4.8 その他の型
        4.8.1 型のチェック
        4.8.2 ユーザの作るクラス
        4.8.3 オブジェクトは他にもある
    4.9 4章のまとめ
 4章の練習問題

5章 数値
    5.1 数値
        5.1.1 数値リテラル
        5.1.2 ビルトインツールとエクステンション
    5.2 Pythonの式と演算子
        5.2.1 演算子の組み合わせ(優先順位)
        5.2.2 優先度を明確にするにはカッコを使う
        5.2.3 式中での型の混在
        5.2.4 演算子のオーバーロード
    5.3 数値の使用例
        5.3.1 変数と演算
        5.3.2 数値の表現
        5.3.3 除算の種類
        5.3.4 ビット演算
        5.3.5 長整数
        5.3.6 複素数
        5.3.7 16進数と8進数
        5.3.8 数値処理のためのビルトインツール
    5.4 その他の数値型
        5.4.1 小数型
        5.4.2 集合
        5.4.3 ブール型
        5.4.4 サードパーティエクステンション
    5.5 5章のまとめ
 5章の練習問題

6章 ダイナミックな型付け
    6.1 型宣言がないPython
        6.1.1 変数の扱い
        6.1.2 型の情報は変数ではなくオブジェクトが持つ
        6.1.3 ガーベージコレクション
    6.2 共有リファレンス
        6.2.1 共有リファレンスとオブジェクトの上書き
        6.2.2 「同等」と「同一」
    6.3 ダイナミックな型付けはすべての基礎
    6.4 6章のまとめ
 6章の練習問題

7章 文字列
    7.1 文字列リテラル
        7.1.1 シングルクォーテーションとダブルクォーテーションは同じ意味を持つ
        7.1.2 エスケープシーケンス
        7.1.3 raw文字列
        7.1.4 トリプルクォーテーション
        7.1.5 Unicode文字列
    7.2 文字列の利用
        7.2.1 基本的な演算
        7.2.2 インデクシングとスライシング
        7.2.3 文字列と数値の間の変換
        7.2.4 文字列に変更を加える
    7.3 文字列フォーマット
        7.3.1 文字列フォーマットに使用するコード
        7.3.2 ディクショナリを使用した文字列フォーマット
    7.4 文字列のメソッド
        7.4.1 文字列メソッドの呼び出しパターン
        7.4.2 文字列の分解
        7.4.3 その他の文字列メソッドの使用例
        7.4.4 stringモジュール
    7.5 型のカテゴリ
        7.5.1 カテゴリが同じなら行える操作も同じ
        7.5.2 不変性を持つオブジェクト
    7.6 7章のまとめ
 7章の練習問題

8章 リストとディクショナリ
    8.1 リスト
    8.2 リストの利用
        8.2.1 基本的な操作
        8.2.2 インデクシング、スライシング、行列の表現
        8.2.3 リストへの変更
    8.3 ディクショナリ
    8.4 ディクショナリの利用
        8.4.1 基本的な操作
        8.4.2 ディクショナリの変更(上書き)
        8.4.3 ディクショナリのメソッド
        8.4.4 ディクショナリの応用例
        8.4.5 ディクショナリ使用上の注意点
    8.5 8章のまとめ
 8章の練習問題

9章 タプル、ファイルオブジェクト、その他
    9.1 タプル
        9.1.1 タプルの基本的な操作
        9.1.2 タプルはなぜ必要か
    9.2 ファイル
        9.2.1 ファイルの基本的な操作
        9.2.2 ファイルの使用
        9.2.3 ファイルオブジェクトの使用例
        9.2.4 その他のファイルツール
    9.3 ビルトイン型の分類
    9.4 複合型オブジェクトの類似点、相違点
    9.5 リファレンスとコピー
    9.6 比較とブール値
        9.6.1 TrueまたはFalseと解釈されるオブジェクト
    9.7 ビルトインオブジェクト間の関係
    9.8 その他のオブジェクト
    9.9 ビルトインオブジェクトに関する注意事項
        9.9.1 変数にオブジェクトを代入すると、コピーではなく、リファレンスが作られる
        9.9.2 繰り返し演算によるネスト
        9.9.3 循環オブジェクト
        9.9.4 不変性オブジェクトは上書きができない
    9.10 9章のまとめ
 9章の練習問題
 II部のまとめ演習

III部 ステートメント

10章 Pythonのステートメント
    10.1 Pythonプログラムの構造
        10.1.1 Pythonのステートメント
    10.2 ifの比較
        10.2.1 Pythonに特有の要素
        10.2.2 Pythonにない要素
        10.2.3 なぜ字下げか
        10.2.4 特殊なケース
    10.3 簡単なステートメントの例
        10.3.1 簡単なループ
        10.3.2 ユーザの入力したデータを利用して計算をする
        10.3.3 入力が適切でない場合
        10.3.4 tryステートメントでエラーを処理する
        10.3.5 ステートメントを二重にネストする
    10.4 10章のまとめ
 10章の練習問題

11章 代入ステートメント、式ステートメント、printステートメント
    11.1 代入ステートメント
        11.1.1 代入ステートメントの形式
        11.1.2 シーケンスの代入
        11.1.3 マルチターゲット代入
        11.1.4 拡張代入ステートメント
        11.1.5 変数名に関するルール
    11.2 式ステートメント
        11.2.1 式ステートメントと上書き
    11.3 printステートメント
        11.3.1 Hello Worldプログラム
        11.3.2 出力ストリームのリダイレクト(出力先の変更)
        11.3.3 >>を使用したリダイレクト
    11.4 11章のまとめ
 11章の練習問題

12章 ifステートメント
    12.1 ifステートメントとは
        12.1.1 ifステートメントの形式
        12.1.2 ifステートメントの例
        12.1.3 多分岐
    12.2 Pythonの構文に関するルール
        12.2.1 ブロックの区切り
        12.2.2 ステートメントの区切り
        12.2.3 1行1ステートメントの原則に従わないコードの例
    12.3 Pythonのブール演算
        12.3.1 if/else式
    12.4 12章のまとめ
 12章の練習問題

13章 whileループとforループ
    13.1 whileループ
        13.1.1 whileステートメントの形式
        13.1.2 whileステートメントの使用例
    13.2 break、continue、passステートメントとelseブロック
        13.2.1 break、continueステートメントやelseブロックを含むwhileループの形式
        13.2.2 break、continue、passステートメントやelseブロックを含むwhileループの使用例
    13.3 forループ
        13.3.1 forステートメントの形式
        13.3.2 forループの使用例
    13.4 反復処理
        13.4.1 ファイルを対象とした反復処理
        13.4.2 他のオブジェクトへの反復処理
        13.4.3 forループ以外での反復処理
        13.4.4 ユーザ定義の関数やクラスを反復処理に対応させる
    13.5 特殊なforループ
        13.5.1 range関数の利用
        13.5.2 シーケンスへの変則的なアクセスへのrange関数の利用
        13.5.3 シーケンスを更新するforループ
        13.5.4 zip関数の利用
        13.5.5 インデックスと要素を生成する:enumerate関数
    13.6 リスト内包表記の概要
        13.6.1 リスト内包表記の基礎
        13.6.2 リスト内包表記をファイルに対して使用する
        13.6.3 リスト内包表記の拡張構文
    13.7 13章のまとめ
 13章の練習問題
14章 Pythonのドキュメント
    14.1 ドキュメントについての基礎知識
        14.1.1 ドキュメントの種類
        14.1.2 # を使用したコメント
        14.1.3 dir関数
        14.1.4 ドキュメンテーション文字列
        14.1.5 PyDoc:help関数
        14.1.6 PyDoc:GUIインタフェース
        14.1.7 標準マニュアルセット
        14.1.8 Webサイト
        14.1.9 Pythonに関する書籍
    14.2 ステートメント、構文についての注意事項
    14.3 14章のまとめ
 14章の練習問題
 III部のまとめ演習

IV部 関数

15章 関数の基礎
    15.1 関数とは
    15.2 関数のコードの書き方、関数の使い方
        15.2.1 defステートメント
        15.2.2 defステートメントのネスト
    15.3 関数の実例1
        15.3.1 定義
        15.3.2 呼び出し
        15.3.3 ポリモーフィズム
    15.4 関数の実例2
        15.4.1 定義
        15.4.2 呼び出し
        15.4.3 ポリモーフィックな関数
        15.4.4 ローカル変数
    15.5 15章のまとめ
 15章の練習問題

16章 スコープと引数
    16.1 スコープに関するルール
        16.1.1 スコープの基礎知識
        16.1.2 LEGBルール
        16.1.3 コード例
        16.1.4 ビルトインスコープ
    16.2 globalステートメント
        16.2.1 グローバル変数は最小限にする
        16.2.2 ファイルをまたいでの変更はできるだけ避ける
        16.2.3 グローバル変数への特殊なアクセス法
    16.3 ネストスコープ
        16.3.1 変数の扱い
        16.3.2 ネストスコープを持つコードの例
    16.4 引数
        16.4.1 引数と共有リファレンス
        16.4.2 呼び出し側への影響を回避する
        16.4.3 参照渡しと同様の結果を得る
    16.5 引数のバリエーション
        16.5.1 位置によるマッチングと名前によるマッチング
        16.5.2 *と**の使用例
        16.5.3 キーワード引数とデフォルト値を組み合わせる
        16.5.4 引数のバリエーションの応用例
        16.5.5 2つの関数
        16.5.6 引数に関する注意事項
    16.6 16章のまとめ
 16章の練習問題

17章 関数に関連する高度なテクニック
    17.1 lambda式
        17.1.1 lambda式の基本
        17.1.2 lambda式の特徴
        17.1.3 ステートメントを式に書き直す
        17.1.4 lambda式とネストスコープ
    17.2 apply関数
        17.2.1 apply関数の使用例
        17.2.2 apply関数を使用しない方法
    17.3 map関数
    17.4 map関数と類似した関数:filterとreduce
    17.5 リスト内包表記
        17.5.1 簡単なリスト内包表記の例
        17.5.2 リスト内包表記で使用するループとif
        17.5.3 リスト内包表記とマトリクス
        17.5.4 リスト内包表記のデメリット
    17.6 ジェネレータとイテレータ
        17.6.1 ジェネレータの例
        17.6.2 ジェネレータ関数プロトコルの拡張:sendとnext
        17.6.3 イテレータとビルトイン型
        17.6.4 ジェネレータ式:イテレータとリスト内包表記の融合
    17.7 実行速度の計測
    17.8 関数を作る際のコツ
        17.8.1 関数はオブジェクトとして扱われる
    17.9 関数についての注意事項
        17.9.1 変数がローカルスコープに属するかどうかはスタティックに決定される
        17.9.2 デフォルト値が可変性オブジェクトである場合は上書きに注意
        17.9.3 戻り値のない関数
        17.9.4 ネストスコープのループ
    17.10 17章のまとめ
 17章の練習問題
 IV部のまとめ演習

V部 モジュール

18章 モジュールとインポート
    18.1 モジュールを利用するメリット
    18.2 Pythonプログラムの基本構造
        18.2.1 トップレベルファイルとモジュール
        18.2.2 インポートと属性
        18.2.3 標準ライブラリモジュール
    18.3 インポートの処理
        18.3.1 インポート対象のモジュールファイルを探す
        18.3.2 見つかったファイルのコードをコンパイルする
        18.3.3 モジュールのコードを実行する
    18.4 18章のまとめ
 18章の練習問題

19章 モジュールのインポート、リロード
    19.1 モジュールの作成
    19.2 モジュールを利用する
        19.2.1 importステートメント
        19.2.2 fromステートメント
        19.2.3 from *ステートメント
        19.2.4 インポートは1回だけ行われる
        19.2.5 importステートメント、fromステートメントでは「代入」が行われる
        19.2.6 変数の更新
        19.2.7 importとfromの違い
        19.2.8 fromステートの問題点
    19.3 名前空間としてのモジュール
        19.3.1 モジュールファイルから名前空間へ
        19.3.2 属性へのアクセス
        19.3.3 インポートとスコープの関係
        19.3.4 名前空間のネスト
    19.4 モジュールのリロード
        19.4.1 reload関数
        19.4.2 リロードの実例
    19.5 19章のまとめ
 19章の練習問題

20章 パッケージインポート
    20.1 パッケージインポートのためのコード
        20.1.1 パッケージインポートとモジュールサーチパス
        20.1.2 __init__.pyファイル
    20.2 パッケージインポートの実例
        20.2.1 パッケージインポートにおけるfromとimportの違い
    20.3 パッケージインポートのメリット
        20.3.1 プログラム間でのモジュール名の重複
    20.4 20章のまとめ
 20章の練習問題

21章 モジュールに関連する高度なテクニック
    21.1 データの隠蔽
        21.1.1 下線と__all__属性
    21.2 拡張機能を有効にする
    21.3 __name__属性
        21.3.1 __name__属性の応用
    21.4 プログラムの中でモジュールサーチパスの設定を変更する
    21.5 モジュールに別名を付ける
    21.6 相対インポートの構文
        21.6.1 なぜfromステートメントの仕様が変更されるのか
    21.7 モジュールの設計
        21.7.1 メタプログラム
    21.8 モジュールについての注意事項
        21.8.1 トップレベルのコードではステートメントの順序に注意
        21.8.2 import、fromに指定するモジュール名は「変数名」
        21.8.3 fromによって作られる変数と元の変数の間につながりはない
        21.8.4 from *を使うと変数の意味がわかりにくくなる
        21.8.5 fromによってコピーされた変数はリロードの影響を受けない
        21.8.6 fromステートメントと対話型コマンドライン
        21.8.7 リロードは自動的には行われない
        21.8.8 再帰インポート
    21.9 21章のまとめ
 21章の練習問題
 V部のまとめ演習

VI部 クラスとオブジェクト指向プログラミング

22章 Pythonでのオブジェクト指向プログラミング
    22.1 クラスとは
    22.2 オブジェクト指向プログラミング
        22.2.1 属性の検索
        22.2.2 クラスとインスタンス
        22.2.3 クラスのメソッド
        22.2.4 オブジェクトツリーの作成
        22.2.5 コードの再利用、カスタマイズ
    22.3 22章のまとめ
 22章の練習問題

23章 クラスのコーディング(基礎)
    23.1 インスタンスオブジェクトは1つのクラスから複数作ることができる
        23.1.1 クラスオブジェクト
        23.1.2 インスタンスオブジェクト
        23.1.3 クラスの実例
    23.2 クラスは継承によってカスタマイズできる
        23.2.1 サブクラスの実例
        23.2.2 クラスとモジュール
    23.3 クラスでは演算子のオーバーロードができる
        23.3.1 演算子のオーバーロードの実例
        23.3.2 演算子のオーバーロードをしないとどうなるか
    23.4 世界一簡単なPythonクラス
    23.5 23章のまとめ
 23章の練習問題

24章 クラスのコーディング(詳細)
    24.1 classステートメント
        24.1.1 classステートメントの書式
        24.1.2 classステートメントの実例
    24.2 メソッド
        24.2.1 メソッドの実例
        24.2.2 スーパークラスのコンストラクタを呼び出す
        24.2.3 特殊なメソッド
    24.3 継承
        24.3.1 属性ツリーの構築
        24.3.2 継承したメソッドのカスタマイズ
        24.3.3 サブクラスのバリエーション
        24.3.4 抽象クラス
    24.4 演算子のオーバーロード
        24.4.1 演算子オーバーロード用のメソッド
        24.4.2 __getitem__:インデクシング
        24.4.3 __getitem__:反復処理への対応
        24.4.4 独自のイテレータの作成
        24.4.5 __getattr__と__setattr__
        24.4.6 属性の隠蔽
        24.4.7 __repr__と__str__
        24.4.8 __radd__
        24.4.9 __call__
        24.4.10 イベントハンドラとしてインスタンスを登録
        24.4.11 __del__
    24.5 名前空間に関する注意事項
        24.5.1 非修飾名
        24.5.2 修飾名:特定のオブジェクトの名前空間
        24.5.3 スコープの決まり方:値が代入される場所
        24.5.4 名前空間の実体はディクショナリ
        24.5.5 __class__属性とクラスの__bases__属性
    24.6 本格的なコード例
    24.7 24章のまとめ
 24章の練習問題

25章 クラスと設計
    25.1 Pythonとオブジェクト指向プログラミング
        25.1.1 引数によって機能が変わるメソッドを作る
    25.2 クラスをデータの集合として使う
    25.3 IS-A関係
    25.4 HAS-A関係
        25.4.1 Processorクラス
    25.5 デリゲーション
    25.6 多重継承
    25.7 ファクトリ
        25.7.1 ファクトリのメリット
    25.8 結合メソッドと非結合メソッド
    25.9 ドキュメンテーション文字列
    25.10 クラスとモジュール
    25.11 25章のまとめ
 25章の練習問題

26章 クラスに関連する高度なテクニック
    26.1 ビルトインオブジェクトの拡張
        26.1.1 デリゲーションによる拡張
        26.1.2 サブクラス作成によるビルトインオブジェクトの機能拡張
    26.2 属性の擬似的な「隠蔽」
        26.2.1 ネームマングリングとは
        26.2.2 ネームマングリングを行うメリット
    26.3 新スタイルクラス
        26.3.1 ダイアモンド継承への対処の違い
        26.3.2 新スタイルクラスのその他の特徴
    26.4 メソッドをインスタンスなしで呼び出すことはできない
        26.4.1 スタティックメソッドとクラスメソッドの使い方
    26.5 関数デコレータ
        26.5.1 関数デコレータの例
    26.6 クラスについての注意事項
        26.6.1 属性変更の副作用
        26.6.2 多重継承したクラスの優先順位
        26.6.3 メソッド、クラスを関数にネストした場合のスコープ
        26.6.4 プログラムの抽象化
    26.7 26章のまとめ
 26章の練習問題
 VI部のまとめ演習

VII部 例外

27章 例外の基礎
    27.1 例外の用途
        27.1.1 例外の役割
    27.2 例外処理の基本
    27.3 try/except/elseステートメント
        27.3.1 tryステートメントのブロック
        27.3.2 elseブロック
        27.3.3 デフォルトの例外処理
        27.3.4 ビルトイン例外の処理
    27.4 try/finallyステートメント
        27.4.1 try/finallyステートメントの例
    27.5 try/except/finallyステートメント
        27.5.1 ネストによってfinallyとexceptを混在させる
        27.5.2 finallyとexceptを混在させたコードの例
    27.6 raiseステートメント
        27.6.1 ユーザ定義例外の発生と処理
        27.6.2 例外とともにデータを渡す
        27.6.3 例外の再発生
    27.7 assertステートメント
        27.7.1 プログラム開発への例外の応用
    27.8 with/asステートメント
        27.8.1 基本的な使い方
        27.8.2 コンテキスト管理プロトコル
    27.9 27章のまとめ
 27章の練習問題

28章 文字列例外とクラス例外
    28.1 文字列例外
        28.1.1 文字列例外は推奨されない
    28.2 クラス例外
        28.2.1 クラス例外の実例
        28.2.2 クラス例外のメリット
        28.2.3 ビルトイン例外
        28.2.4 メッセージの改良
        28.2.5 インスタンスに例外に関する情報を持たせる
    28.3 raiseステートメントの書式
    28.4 28章のまとめ
 28章の練習問題

29章 例外と設計
    29.1 例外ハンドラのネスト
        29.1.1 関数呼び出しによるネスト
        29.1.2 コード上でのネスト
    29.2 例外の活用方法
        29.2.1 例外はエラーに対応するとは限らない
        29.2.2 処理結果の通知
        29.2.3 プログラムのコード全体をtryステートメントの中に入れる
        29.2.4 テストプログラムの作成
        29.2.5 sys.exc_info
    29.3 例外に関する「設計」の問題
        29.3.1 どのコードをtryステートメントに入れるか
        29.3.2 exceptブロックの対応範囲を広げすぎない
        29.3.3 対応範囲が狭すぎるのも問題
    29.4 例外についての注意事項
        29.4.1 文字列例外のマッチングはオブジェクトが同一かどうかを基準に行われる
        29.4.2 余分な例外を捕まえないようにする
    29.5 言語の「コア部分」以外についての解説
        29.5.1 Pythonのツールセット
        29.5.2 大規模プログラムのための開発ツール
    29.6 29章のまとめ
 29章の練習問題
 VII部のまとめ演習

付録A インストールと環境設定
    A.1 Pythonインタプリタのインストール
        A.1.1 Pythonが手元にあるかの確認
        A.1.2 Pythonをどこで入手するか
        A.1.3 インストールの手順
    A.2 Pythonの環境設定
        A.2.1 Pythonに関連する環境変数
        A.2.2 環境変数の設定方法

付録B 演習問題の解答
    B.1 I部 Pythonの基礎知識
    B.2 II部 ビルトインオブジェクト
    B.3 III部 ステートメント
    B.4 IV部 関数
    B.5 V部 モジュール
    B.6 VI部 クラスとオブジェクト指向プログラミング
    B.7 VII部 例外

付録C さらに新しいバージョンのPythonについて
    C.1 新バージョンの位置づけ
        C.1.1 新機能と後方互換性
    C.2 歴史
    C.3 変更点とその裏にある思想
        C.3.1 誤ちを正す
        C.3.2 トレードオフの変更
        C.3.3 新しいパラダイムの導入
        C.3.4 より統一的に
    C.4 おわりに

索引