Pythonクイックリファレンス 第4版

[cover photo]
TOPICS
クイックリファレンス , Python
発行年月日
PRINT LENGTH
864
ISBN
978-4-8144-0081-2
原書
Python in a Nutshell, 4th Edition
FORMAT
Print PDF EPUB
Ebook
5,280円
Ebookを購入する
Print
5,280円

本書はPythonの機能を十分に活用するためのリファレンスです。チュートリアルとしての「Pythonを使ってみる」、型アノテーションや文字列といった「Python言語と組み込み機能」、ファイルやテキスト、時間の操作、数値処理などをまとめた「Pythonの標準ライブラリと拡張モジュール」、HTTPの処理や構造化テキストを学ぶ「ネットワークとWebプログラミング」、バージョン移行などに関する「拡張、配布、バージョンのアップグレードと移行」という5部構成となっています。Pythonを本格的に学びたい人から、さらなるスキルアップを目指したい人まで、Pythonを最大限に活用するための有益な情報がぎっちり詰まった1冊です。Python 3.11対応。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第1刷正誤表

2024年7月更新

■P.622 「17.2 デバッグ」12行目
【誤】logingモジュール
【正】loggingモジュール

目次

まえがき

1章 Pythonの紹介
    1.1 Python言語
    1.2 Pythonの標準ライブラリと拡張モジュール
    1.3 Pythonの実装
        1.3.1 CPython
        1.3.2 PyPy
        1.3.3 CPython、PyPy、その他の実装の選択
        1.3.4 その他の開発、実装、ディストリビューション
        1.3.5 ライセンスと価格の問題
    1.4 Pythonの開発とバージョン
    1.5 Pythonの参考資料
        1.5.1 ドキュメント
        1.5.2 コミュニティ
    1.6 インストール
    1.7 Pythonをバイナリからインストールする
    1.8 Pythonをソースコードからインストールする
        1.8.1 Windows
        1.8.2 Unix系プラットフォーム

2章 Pythonインタープリタ
    2.1 Pythonプログラム
        2.1.1 環境変数
        2.1.2 コマンドライン構文とオプション
        2.1.3 Windowsのpyランチャー
        2.1.4 PyPyインタープリタ
        2.1.5 対話型セッション
    2.2 Pythonの開発環境
        2.2.1 IDLE
        2.2.2 その他のPython IDE
        2.2.3 Pythonをサポートする無料のテキストエディタ
        2.2.4 Pythonプログラムをチェックするためのツール
    2.3 Pythonプログラムを実行する
    2.4 Pythonをブラウザで実行する
        2.4.1 PyScript
        2.4.2 Jupyter

3章 Python言語
    3.1 語彙の構造
        3.1.1 行とインデント
        3.1.2 文字セット
        3.1.3 トークン
        3.1.4 文
    3.2 データ型
        3.2.1 数値
        3.2.2 シーケンス
        3.2.3 セット
        3.2.4 ディクショナリ
        3.2.5 None
        3.2.6 Ellipsis(...)
        3.2.7 呼び出し可能オブジェクト
        3.2.8 ブール値
    3.3 変数とその他の参照
        3.3.1 変数
        3.3.2 代入文
        3.3.3 del文
    3.4 式と演算子
        3.4.1 比較の連結
        3.4.2 短絡演算子
        3.4.3 代入式
    3.5 数値演算
        3.5.1 数値変換
        3.5.2 算術演算
        3.5.3 整数のビット演算
    3.6 シーケンスの演算
        3.6.1 シーケンス全般
        3.6.2 文字列
        3.6.3 タプル
        3.6.4 リスト
    3.7 セットの演算
        3.7.1 セットの所属検査
        3.7.2 セットのメソッド
    3.8 ディクショナリの演算
        3.8.1 ディクショナリの所属検査
        3.8.2 ディクショナリのインデクシング
        3.8.3 ディクショナリのメソッド
    3.9 制御フロー文
        3.9.1 if文
        3.9.2 match文
        3.9.3 while文
        3.9.4 for文
        3.9.5 break文
        3.9.6 continue文
        3.9.7 ループ文のelse句
        3.9.8 pass文
        3.9.9 try文とraise文
        3.9.10 with文
    3.10 関数
        3.10.1 関数の定義:def文
        3.10.2 パラメータ
        3.10.3 関数オブジェクトの属性
        3.10.4 関数のアノテーション
        3.10.5 return文
        3.10.6 関数の呼び出し
        3.10.7 名前空間
        3.10.8 lambda式
        3.10.9 ジェネレータ
        3.10.10 再帰

4章 オブジェクト指向のPython
    4.1 クラスとインスタンス
        4.1.1 Pythonのクラス
        4.1.2 class文
        4.1.3 クラスの本体
        4.1.4 ディスクリプタ
        4.1.5 インスタンス
        4.1.6 属性参照の基礎
        4.1.7 バインドされたメソッドとバインドされていないメソッド
        4.1.8 継承
        4.1.9 組み込み型object
        4.1.10 クラスレベルのメソッド
        4.1.11 プロパティ
        4.1.12 __slots__
        4.1.13 __getattribute__
        4.1.14 インスタンスごとのメソッド
        4.1.15 組み込み型からの継承
    4.2 特殊メソッド
        4.2.1 汎用的な特殊メソッド
        4.2.2 コンテナの特殊メソッド
        4.2.3 抽象基底クラス
        4.2.4 数値オブジェクトの特殊メソッド
    4.3 デコレータ
    4.4 メタクラス
        4.4.1 クラスの単純なカスタマイズ:カスタムメタクラスに代わる方法
        4.4.2 Pythonはクラスのメタクラスをどのように決定するか
        4.4.3 メタクラスはクラスをどのように作成するか
        4.4.4 データクラス
        4.4.5 列挙型(enum)

5章 型アノテーション
    5.1 歴史
    5.2 型チェックユーティリティ
        5.2.1 mypy
        5.2.2 その他の型チェッカー
    5.3 型アノテーションの構文
    5.4 typingモジュール
        5.4.1 型
        5.4.2 型式パラメータ
        5.4.3 抽象基底クラス
        5.4.4 プロトコル
        5.4.5 ユーティリティとデコレータ
        5.4.6 カスタム型を定義する
    5.5 実行時の型アノテーションの使用
    5.6 コードに型アノテーションを追加する方法
        5.6.1 新しいコードに型アノテーションを追加する
        5.6.2 既存のコードに型アノテーションを追加する:漸進的型付け
        5.6.3 .pyiスタブファイルを使う
    5.7 本章のまとめ

6章 例外
    6.1 try文
        6.1.1 try/except
        6.1.2 try/finally
        6.1.3 try/except/finally
    6.2 raise文
    6.3 with文とコンテキストマネージャー
    6.4 ジェネレータと例外
    6.5 例外の伝播
    6.6 例外オブジェクト
        6.6.1 標準例外の階層
        6.6.2 標準例外クラス
        6.6.3 OSErrorのサブクラス
        6.6.4 他の例外またはトレースバックを「ラップ」する例外
    6.7 カスタム例外クラス
        6.7.1 カスタム例外と多重継承
        6.7.2 標準ライブラリで使われるその他の例外
    6.8 ExceptionGroupとexcept*
    6.9 エラーチェック戦略
        6.9.1 LBYLとEAFP
        6.9.2 大規模なプログラムでのエラー処理
        6.9.3 エラーログを出力する
    6.10 assert文

7章 モジュールとパッケージ
    7.1 モジュールオブジェクト
        7.1.1 import文
        7.1.2 from文
    7.2 モジュールのロード
        7.2.1 組み込みモジュール
        7.2.2 ファイルシステムでのモジュールの検索
        7.2.3 メインプログラム
        7.2.4 モジュールをリロードする
        7.2.5 循環インポート
        7.2.6 カスタムインポータ
    7.3 パッケージ
        7.3.1 パッケージオブジェクトの特別な属性
        7.3.2 絶対インポートと相対インポート
    7.4 ディストリビューションユーティリティ(distutils)とsetuptools
    7.5 Python環境
        7.5.1 仮想環境を起動する
        7.5.2 仮想環境とは何か
        7.5.3 仮想環境の作成と削除
        7.5.4 仮想環境を操作する
        7.5.5 依存関係の要件を管理する
        7.5.6 その他の環境管理ソリューション
        7.5.7 仮想環境のベストプラクティス

8章 基本的な組み込みモジュールと標準ライブラリモジュール
    8.1 組み込み型
    8.2 組み込み関数
    8.3 sysモジュール
    8.4 copyモジュール
    8.5 collectionsモジュール
        8.5.1 ChainMap
        8.5.2 Counter
        8.5.3 OrderedDict
        8.5.4 defaultdict
        8.5.5 deque
    8.6 functoolsモジュール
    8.7 heapqモジュール
        8.7.1 Decorate-Sort-Undecorateイディオム
    8.8 argparseモジュール
    8.9 itertoolsモジュール

9章 文字列とその操作
    9.1 文字列オブジェクトのメソッド
    9.2 stringモジュール
    9.3 文字列のフォーマット
        9.3.1 フォーマット済み文字列リテラル(f-string)
        9.3.2 format呼び出しを使ったフォーマット
        9.3.3 値の変換
        9.3.4 値のフォーマット:フォーマット指定子
        9.3.5 入れ子のフォーマット仕様
        9.3.6 ユーザー定義クラスのフォーマット
        9.3.7 %を使うレガシー文字列フォーマット
        9.3.8 フォーマット指定子の構文
    9.4 テキストの折り返しとパディング
    9.5 pprintモジュール
    9.6 reprlibモジュール
    9.7 Unicode
        9.7.1 codecsモジュール
        9.7.2 unicodedataモジュール

10章 正規表現
    10.1 正規表現とreモジュール
        10.1.1 正規表現:bytesとstr
        10.1.2 パターン文字列の構文
        10.1.3 正規表現の一般的なイディオム
        10.1.4 文字の集合
        10.1.5 選択肢
        10.1.6 グループ
    10.2 オプションフラグ
    10.3 マッチングと検索
    10.4 文字列の先頭と末尾のアンカー
    10.5 正規表現オブジェクト
    10.6 マッチオブジェクト
    10.7 reモジュールの関数
    10.8 正規表現と:=演算子
    10.9 サードパーティモジュールregex

11章 ファイルとテキストの操作
    11.1 ioモジュール
        11.1.1 openを使ってファイルオブジェクトを作成する
        11.1.2 ファイルオブジェクトの属性とメソッド
        11.1.3 ファイルオブジェクトでの反復処理
        11.1.4 ファイルのようなオブジェクトとポリモーフィズム
    11.2 tempfileモジュール
    11.3 ファイルI/Oの補助モジュール
        11.3.1 fileinputモジュール
        11.3.2 structモジュール
    11.4 インメモリファイル:io.StringIOとio.BytesIO
    11.5 アーカイブファイルと圧縮ファイル
        11.5.1 tarfileモジュール
        11.5.2 zipfileモジュール
    11.6 osモジュール
        11.6.1 ファイルシステムの操作
        11.6.2 os.pathモジュール
        11.6.3 OSError例外
    11.7 errnoモジュール
    11.8 pathlibモジュール
    11.9 statモジュール
    11.10 filecmpモジュール
    11.11 fnmatchモジュール
    11.12 globモジュール
    11.13 shutilモジュール
    11.14 テキストの入出力
        11.14.1 標準出力と標準エラー
        11.14.2 print関数
        11.14.3 標準入力
        11.14.4 getpassモジュール
    11.15 より高度なテキストI/O
        11.15.1 readlineモジュール
        11.15.2 コンソールI/O
    11.16 国際化
        11.16.1 localeモジュール
        11.16.2 gettextモジュール
        11.16.3 その他の国際化リソース

12章 永続化とデータベース
    12.1 シリアライズ
        12.1.1 csvモジュール
        12.1.2 jsonモジュール
        12.1.3 pickleモジュール
        12.1.4 shelveモジュール
    12.2 DBMのモジュール
        12.2.1 dbmパッケージ
        12.2.2 DBM形式のファイルを使う例
    12.3 Python Database API(DBAPI)
        12.3.1 例外クラス
        12.3.2 スレッドの安全性
        12.3.3 パラメータのスタイル
        12.3.4 ファクトリ関数
        12.3.5 型記述属性
        12.3.6 connect関数
        12.3.7 接続オブジェクト
        12.3.8 カーソルオブジェクト
        12.3.9 DBAPI準拠モジュール
        12.3.10 SQLite

13章 時間の操作
    13.1 timeモジュール
    13.2 datetimeモジュール
        13.2.1 dateクラス
        13.2.2 timeクラス
        13.2.3 datetimeクラス
        13.2.4 timedeltaクラス
        13.2.5 tzinfo抽象クラス
        13.2.6 timezoneクラス
    13.3 zoneinfoモジュール
    13.4 dateutilモジュール
    13.5 schedモジュール
    13.6 calendarモジュール

14章 実行のカスタマイズ
    14.1 サイトごとのカスタマイズ
    14.2 終了関数
    14.3 動的実行とexec
        14.3.1 execを使わない
        14.3.2 式
        14.3.3 compileとコードオブジェクト
        14.3.4 信頼できないコードではexecまたはevalを使わない
    14.4 内部型
        14.4.1 型オブジェクト
        14.4.2 コードオブジェクト型
        14.4.3 フレーム型
    14.5 ガベージコレクション
        14.5.1 gcモジュール
        14.5.2 weakrefモジュール

15章 並行性:スレッドとプロセス
    15.1 Pythonのスレッド
    15.2 threadingモジュール
        15.2.1 Threadオブジェクト
        15.2.2 スレッド同期オブジェクト
        15.2.3 スレッドローカルストレージ
    15.3 queueモジュール
    15.4 multiprocessingモジュール
        15.4.1 multiprocessingとthreadingの違い
        15.4.2 状態の共有:Value、Array、Manager
        15.4.3 プロセスプール
    15.5 concurrent.futuresモジュール
    15.6 スレッドプログラムのアーキテクチャ
    15.7 プロセス環境
    15.8 他のプログラムの実行
        15.8.1 subprocessモジュールを使う
        15.8.2 osモジュールを使って他のプログラムを実行する
    15.9 mmapモジュール
        15.9.1 mmapオブジェクトのメソッド
        15.9.2 IPCにmmapオブジェクトを使う

16章 数値処理
    16.1 浮動小数点数
    16.2 mathモジュールとcmathモジュール
    16.3 statisticsモジュール
    16.4 operatorモジュール
    16.5 乱数と擬似乱数
        16.5.1 randomモジュール
        16.5.2 暗号品質の乱数:secretsモジュール
    16.6 fractionsモジュール
    16.7 decimalモジュール
    16.8 配列の処理
        16.8.1 arrayモジュール
        16.8.2 数値配列計算のための拡張機能

17章 テスト、デバッグ、最適化
    17.1 テスト
        17.1.1 単体テストとシステムテスト
        17.1.2 doctestモジュール
        17.1.3 unittestモジュール
        17.1.4 pytestでのテスト
    17.2 デバッグ
        17.2.1 デバッグの前に
        17.2.2 inspectモジュール
        17.2.3 tracebackモジュール
        17.2.4 pdbモジュール
        17.2.5 その他のデバッグモジュール
    17.3 warningsモジュール
        17.3.1 クラス
        17.3.2 オブジェクト
        17.3.3 フィルタ
        17.3.4 関数
    17.4 最適化
        17.4.1 十分に高速なPythonアプリケーションを開発する
        17.4.2 ベンチマーク
        17.4.3 大規模な最適化
        17.4.4 プロファイリング
        17.4.5 小規模な最適化

18章 ネットワークの基礎
    18.1 Berkeley Socket Interface
        18.1.1 ソケットのアドレス
        18.1.2 クライアント/サーバーコンピューティング
        18.1.3 socketモジュール
        18.1.4 ソケットオブジェクト
        18.1.5 コネクションレス型のソケットクライアント
        18.1.6 コネクションレス型のソケットサーバー
        18.1.7 コネクション型のソケットクライアント
        18.1.8 コネクション型のソケットサーバー
    18.2 TLS
    18.3 SSLContext

19章 クライアント側のネットワークプロトコルモジュール
    19.1 電子メールプロトコル
        19.1.1 poplibモジュール
        19.1.2 smtplibモジュール
    19.2 HTTPクライアントとURLクライアント
        19.2.1 URLアクセス
        19.2.2 urllibパッケージ
        19.2.3 サードパーティパッケージrequests
    19.3 その他のネットワークプロトコル

20章 HTTPの処理
    20.1 http.server
    20.2 WSGI
        20.2.1 WSGIサーバー
        20.2.2 ASGI
    20.3 PythonのWebフレームワーク
        20.3.1 「フルスタック」フレームワークと「軽量」フレームワーク
        20.3.2 よく知られているフルスタックフレームワーク
        20.3.3 軽量フレームワークを使うときの注意点
        20.3.4 よく知られている軽量フレームワーク

21章 電子メール、MIME、その他のネットワークエンコーディング
    21.1 MIMEと電子メールフォーマットの処理
        21.1.1 emailパッケージの関数
        21.1.2 email.messageモジュール
        21.1.3 email.generatorモジュール
        21.1.4 メッセージを作成する
        21.1.5 email.encodersモジュール
        21.1.6 email.utilsモジュール
        21.1.7 emailパッケージを使う例
    21.2 バイナリデータをASCIIテキストとしてエンコードする
        21.2.1 base64モジュール
        21.2.2 quopriモジュール
        21.2.3 uuモジュール

22章 構造化テキスト:HTML
    22.1 html.entitiesモジュール
    22.2 サードパーティパッケージBeautifulSoup
        22.2.1 BeautifulSoupクラス
        22.2.2 bs4のナビゲート可能なクラス
        22.2.3 bs4のfind...メソッド(別名検索メソッド)
        22.2.4 bs4のCSSセレクタ
        22.2.5 BeautifulSoupを使ったHTML解析の例
    22.3 HTMLを生成する
        22.3.1 bs4を使ったHTMLの編集と作成
        22.3.2 bs4を使ってHTMLを構築する
        22.3.3 テンプレート化
        22.3.4 jinja2パッケージ

23章 構造化テキスト:XML
    23.1 ElementTree
        23.1.1 Elementクラス
        23.1.2 ElementTreeクラス
        23.1.3 ElementTreeモジュールの関数
    23.2 ElementTree.parseを使ってXMLを解析する
        23.2.1 ElementTreeの要素を選択する
        23.2.2 ElementTreeを編集する
    23.3 ElementTreeを一から作成する
    23.4 XMLを反復的に解析する

24章 プログラムと拡張のパッケージ化
    24.1 本章で取り上げないもの
    24.2 Pythonのパッケージ化の略史
    24.3 オンライン資料

25章 Classic Pythonの拡張と埋め込み
    25.1 オンライン資料

26章 v3.7からv3.nへの移行
    26.1 Python 3.11までの重要な変更
    26.2 Pythonバージョンのアップグレードを計画する
        26.2.1 ターゲットバージョンを選択する
        26.2.2 作業の範囲を設定する
        26.2.3 コードの変更を適用する
        26.2.4 pyupgradeを使ってアップグレードを自動化する
        26.2.5 マルチバージョンのテスト
        26.2.6 制御されたデプロイプロセスを使う
        26.2.7 アップグレードはどれくらいの頻度で実行すべきか
    26.3 まとめ

付録A Python 3.7から3.11までの新機能と変更点
    A.1 Python 3.7
    A.2 Python 3.8
    A.3 Python 3.9
    A.4 Python 3.10
    A.5 Python 3.11

索引