Pythonでプログラムを作成するときに役立つ機能とライブラリを網羅した、実践的なレシピ集です。本書を使いこなして、Pythonプログラマーとして大きなステップアップを図りましょう。
本書では、Pythonが提供する、環境構築、コーディング規約、言語仕様、オブジェクト指向をサポートするクラス、型をアノテーションとして付けられる型ヒントなどに関する実践で役立つ機能を幅広く網羅しています。さらに標準ライブラリとよく使われるサードパーティライブラリとして、テキスト処理、数値処理、日付・時刻処理、データ型、アルゴリズム、ファイルとディレクトリへのアクセス、データ圧縮・アーカイブ・永続化、特定データフォーマットやインターネット上データの扱い、HTMLの扱い、テスト、デバッグ、暗号、並行処理・並列処理までの活用法を紹介します。よくある使い方、よくあるエラーや周辺知識なども加えられており、プログラミングのヒントが満載です。
Chapter1 Pythonの環境
1.1 Pythonパッケージを管理する ─ pip
1.1.1 導入方法
1.1.2 基本的な使い方
1.1.3 requirements.txtを作って、複数の環境でバージョンを統一する
1.1.4 -cオプションで特定パッケージのインストール可能バージョンに制限をかける
1.1.5 pip:よくある使い方
1.1.6 pip:ちょっと役立つ周辺知識
1.2 仮想環境を作成する ─ venv
1.2.1 仮想環境とは何か
1.2.2 基本的な使い方
1.2.3 venv:よくある使い方
1.2.4 venv:ちょっと役立つ周辺知識
1.2.5 venv:よくあるエラーと対処法
Chapter2 コーディング規約
2.1 Python標準のスタイルガイド ─ PEP 8
2.1.1 PEP 8で定義されているルール
2.1.2 コードのレイアウト
2.1.3 コメント
2.1.4 命名規約
2.1.4 PEP 8:よくある使い方
2.2 静的コード解析ツール ─ Flake8
2.2.1 Flake8 のインストール
2.2.2 静的コードチェック
2.2.3 Flake8のオプションの利用
2.2.4 プラグインを利用したより便利なFlake8の利用
2.2.5 Flake8:よくある使い方
2.2.6 Flake8:ちょっと役立つ周辺知識
2.2.7 Flake8:よくあるエラーと対処法
2.3 ソースコードの自動整形 ─ Black
2.3.1 Blackのインストール
2.3.2 Blackの特徴
2.3.3 Blackによるフォーマット
2.3.4 Blackのオプション
2.3.5 Black:よくある使い方
2.3.6 Black:ちょっと役立つ周辺知識
2.3.7 Black:よくあるエラーと対処法
Chapter3 Pythonの言語仕様
3.1 例外処理
3.1.1 例外を処理する
3.1.2 基底クラスで例外を捕捉する
3.1.3 独自の例外を定義して、例外を送出する
3.1.4 例外処理:よくある使い方
3.1.5 例外処理:ちょっと役立つ周辺知識
3.1.6 例外処理:よくあるエラーと対処法
3.2 with文
3.2.1 with文
3.2.2 コンテキストマネージャー(context manager)
3.2.3 標準ライブラリのデコレーター ─ @contextlib.contextmaneger
3.2.4 with文:よくある使い方
3.2.5 with文:ちょっと役立つ周辺知識
3.3 関数の引数
3.3.1 位置引数
3.3.2 キーワード引数
3.3.3 位置引数とキーワード引数の混在
3.3.4 デフォルト値付き引数
3.3.5 可変長位置引数
3.3.6 可変長キーワード引数
3.3.7 キーワード専用引数
3.3.8 位置専用引数
3.3.9 関数の引数:よくある使い方
3.3.10 関数の引数:よくあるエラーと対処法
3.4 アンパック
3.4.1 アンパック
3.4.2 ネストしたタプル、リストのアンパック
3.4.3 アスタリスクを使ったアンパック
3.4.4 関数の引数のアンパック
3.4.5 アンパック:よくある使い方
3.5 内包表記、ジェネレーター式
3.5.1 リスト内包表記
3.5.2 その他の内包表記
3.5.3 内包表記、ジェネレーター式:よくある使い方
3.6 ジェネレーター ─ generator
3.6.1 ジェネレーター
3.6.2 list()関数を使用してリストに変換する
3.6.3 大きいファイルの処理にジェネレーターを使用する
3.6.4 ジェネレーター:よくある使い方
3.6.5 ジェネレーター:ちょっと役立つ周辺知識
3.6.6 ジェネレーター:よくあるエラーと対処法
3.7 デコレーター
3.7.1 デコレーターを使用する
3.7.2 関数デコレーターを自作する
3.7.3 functools.wrapsを使用する
3.7.4 デコレーター:よくある使い方
Chapter4 Pythonのクラス
4.1 class構文
4.1.1 クラス定義
4.1.2 インスタンス化
4.1.3 selfとは
4.2 属性とメソッド
4.2.1 コンストラクター
4.2.2 データ属性
4.2.3 メソッド
4.2.4 特殊メソッド
4.2.5 プロパティ化
4.2.6 クラスメソッドの具体的な使い方
4.3 継承
4.3.1 標準ライブラリの継承の例
4.3.2 子クラスの定義
4.3.3 多重継承
4.3.4 継承:よくある使い方
4.3.5 エラーと対処方法
4.4 dataclass
4.4.1 基本文法
4.4.2 コンストラクターの任意引数
4.4.3 データ変換
4.4.4 dataclass:よくある使い方
4.4.5 エラーと対処方法
4.5 オブジェクト関連関数
4.5.1 関数の種類
4.5.2 オブジェクト関連関数の使い方
4.5.3 周辺知識
4.5.4 エラーと対処方法
Chapter5 型ヒント
5.1 型ヒント
5.1.1 型ヒントとは
5.1.2 基本的な型ヒントの一覧と書き方
5.1.3 typingモジュールを利用した型ヒント
5.1.4 型ヒント:よくある使い方
5.2 静的型チェックを行う ─ mypy
5.2.1 静的型チェックツールで型ヒントをチェックする
5.2.2 mypyのインストール
5.2.3 mypyによる静的型チェック
5.2.4 mypyのオプション
5.2.5 mypy:よくある使い方
5.2.6 mypy:ちょっと役立つ周辺知識
5.2.7 mypy:よくあるエラーと対処法
Chapter6 テキストの処理
6.1 一般的な文字列操作を行う ─ str、string
6.1.1 文字列リテラルの書き方
6.1.2 文字列以外のオブジェクトを文字列に変換する
6.1.3 文字列のチェックメソッド
6.1.4 文字列の変換を行う
6.1.5 その他の文字列メソッド
6.1.6 文字列定数を利用する
6.1.7 str、string:ちょっと役立つ周辺知識
6.1.8 str、string:よくあるエラーと対処法
6.2 フォーマットと文字列リテラル ─ f-string
6.2.1 f-stringの書き方
6.2.2 =を付けた出力
6.2.3 フォーマットの指定方法
6.2.4 f-string導入前の文字列フォーマット方法
6.3 正規表現を扱う ─ re
6.3.1 基本的な関数 ─ search、match
6.3.2 reモジュールの定数(フラグ)
6.3.3 正規表現オブジェクト
6.3.4 マッチオブジェクト
6.3.5 re:よくある使い方
6.3.6 re:ちょっと役立つ周辺知識
6.3.7 re:よくあるエラーと対処法
6.4 Unicodeデータベースへアクセスする ─ unicodedata
6.4.1 Unicode文字と文字の名前を変換する
6.4.2 Unicode文字列の正規化
6.4.3 unicodedata:よくある使い方
6.4.4 unicodedata:ちょっと役立つ周辺知識
Chapter7 数値の処理
7.1 基本的な数値計算を行う ─ 組み込み関数、math
7.1.1 数値の計算を行う(組み込み関数)
7.1.2 数値の計算を行う ─ math モジュール
7.1.3 数値を丸める、絶対値を求める
7.1.4 数値計算に利用する定数を取得する
7.1.5 組み込み関数、math:ちょっと役立つ周辺知識
7.1.6 浮動小数の非数nanの値を確認する
7.2 十進数で計算を行う ─ decimal
7.2.1 精度を指定した計算を行う
7.2.2 数値の丸めを行う
7.2.3 decimal:よくある使い方
7.2.4 decimal:よくあるエラーと対処法
7.3 擬似乱数を扱う ─ random
7.3.1 乱数を生成する
7.3.2 特定の分布に従う乱数を生成する
7.3.3 ランダムに選択する
7.4 統計計算を行う ─ statistics
7.4.1 平均値や中央値を求める
7.4.2 標準偏差や分散を求める
Chapter8 日付と時刻の処理
8.1 日付や時刻を扱う ─ datetime
8.1.1 日付を扱う ─ date オブジェクト
8.1.2 時刻を扱う ─ time オブジェクト
8.1.3 日時を扱う ─ datetimeオブジェクト
8.1.4 日時の差を扱う ─ timedelta オブジェクト
8.1.5 strftime()で使える主な指定子
8.1.6 datetime:よくある使い方
8.1.7 datetime:ちょっと役立つ周辺知識
8.1.8 datetime:よくあるエラーと対処法
8.2 時刻を扱う ─ time
8.2.1 時刻を取得する
8.2.2 時刻オブジェクト ─ struct_time
8.2.3 スレッドの一時停止 ─ sleep()
8.2.4 time:よくある使い方
8.2.5 time:ちょっと役立つ周辺知識
8.3 IANAタイムゾーンデータベースを扱う ─ zoneinfo
8.3.1 IANAタイムゾーンを表すオブジェクト ─ ZoneInfo
8.3.2 zoneinfo:よくある使い方
8.3.3 zoneinfo:ちょっと役立つ周辺知識
8.3.4 zoneinfo:よくあるエラーと対処法
8.4 datetimeの強力な拡張モジュール ─ dateutil
8.4.1 dateutilのインストール
8.4.2 日付文字列の構文解析 ─ parser
8.4.3 日付の差の計算 ─ relativedelta
8.4.4 繰り返しルール ─ rrule
8.4.5 dateutil:よくある使い方
8.4.6 dateutil:ちょっと役立つ周辺知識
8.4.7 dateutil:よくあるエラーと対処法
Chapter9 データ型とアルゴリズム
9.1 ソート ─ sorted、sort、operator
9.1.1 sorted()関数
9.1.2 reversed()関数
9.1.3 リストのsort()、reverse()メソッド
9.1.4 key引数
9.1.5 operatorモジュール
9.1.6 ソート:ちょっと役立つ周辺知識
9.1.7 sorted、sort、operator:よくあるエラーと対処法
9.2 さまざまなコンテナー型を扱う ─ collections
9.2.1 データの件数をカウントする ─ Counter
9.2.2 デフォルト値を持った辞書 ─ defaultdict
9.2.3 データの挿入順を維持する辞書 ─ OrderedDict
9.2.4 名前付きフィールドを持つタプル ─ namedtuple
9.2.5 collections:よくある使い方
9.3 二分法アルゴリズムを利用する ─ bisect
9.3.1 二分法アルゴリズムで挿入する位置を返す.
9.3.2 ソート済みのリストに要素を挿入する
9.3.3 bisect:よくあるエラーと対処法
9.4 列挙型による定数の定義を行う ─ enum
9.4.1 定数値を定義する
9.4.2 定数を呼び出す
9.4.3 定数同士を比較する
9.4.4 enum:よくある使い方
9.4.5 enum:ちょっと役立つ周辺知識
9.4.6 enum:よくあるエラーと対処法
9.5 データを読みやすい形式で出力する ─ pprint
9.5.1 オブジェクトを整形して出力する ─ pprint()
9.5.2 オブジェクトを整形した文字列を取得する ─ pformat
9.5.3 pprint:よくある使い方
9.5.4 pprint:ちょっと役立つ周辺知識
9.6 イテレーターの組み合わせで処理を組み立てる ─ itertools
9.6.1 イテラブルオブジェクトを連結する ─ chain()
9.6.2 連続する値をまとめる ─ groupby()
9.6.3 イテレーターから範囲を指定して値を取得する ─ islice()
9.6.4 複数のイテラブルオブジェクトの要素からタプルを作成する ─ zip()、zip_longest()
9.6.5 データを組み合わせたイテレーターを取得する
9.6.6 itertools:よくある使い方
9.6.7 itertools:ちょっと役立つ周辺知識
9.7 ミュータブルなオブジェクトをコピーする ─ copy
9.7.1 浅いコピーを行う ─ copy()関数
9.7.2 深いコピーを行う ─ deepcopy()関数
9.7.3 copy:よくある使い方
9.7.4 copy:ちょっと役立つ周辺知識
Chapter10 汎用OS・ランタイムサービス
10.1 OSの機能を利用する ─ os
10.1.1 実行中のプロセス属性の操作
10.1.2 ファイルとディレクトリの操作
10.1.3 さまざまなシステム情報へのアクセス
10.1.4 ランダムな文字列の生成
10.1.5 os:よくある使い方
10.1.6 os:ちょっと役立つ周辺知識
10.1.7 os:よくあるエラーと対処法
10.2 ストリームを扱う ─ io
10.2.1 インメモリなテキストストリームを扱う ─ StringIO
10.2.2 インメモリなバイナリストリームを扱う ─ BytesIO
10.2.3 ioモジュールをユニットテストで活用する
10.2.4 io:よくある使い方
10.2.5 io:ちょっと役立つ周辺知識
10.2.6 io:よくあるエラーと対処法
10.3 インタープリターに関わる情報を取得、操作する ─ sys
10.3.1 コマンドライン引数を取得する ─ argv
10.3.2 ライブラリのインポートパスを操作する ─ path
10.3.3 プログラムを終了する ─ exit()
10.3.4 コンソールの入出力を扱う ─ stdin、stdout、stderr
10.3.5 breakpoint()実行時のフック関数 ─ breakpointhook()
10.3.6 Pythonのバージョン番号を調べる ─ version_info
10.3.7 sys:よくある使い方
10.3.8 sys:ちょっと役立つ周辺知識
10.3.9 sys:よくあるエラーと対処法
10.4 コマンドラインオプション、引数を扱う ─ argparse
10.4.1 コマンドラインオプションを扱う
10.4.2 argparse:よくある使い方
10.4.3 argparse:ちょっと役立つ周辺知識
10.4.4 argparse:よくあるエラーと対処法
Chapter11 ファイルとディレクトリへのアクセス
11.1 ファイルパス操作を直観的に行う ─ pathlib
11.1.1 クラス構成
11.1.2 純粋パスを扱う ─ PurePath
11.1.3 具象パスを扱う ─ Path
11.1.4 pathlib:よくある使い方
11.1.5 pathlib:ちょっと役立つ周辺知識
11.1.6 pathlib:よくあるエラーと対処法
11.2 一時的なファイルやディレクトリを生成する ─ tempfile
11.2.1 一時ファイルを作成する
11.2.2 一時ディレクトリを作成する
11.2.3 tempfile:よくある使い方
11.3 高レベルなファイル操作を行う ─ shutil
11.3.1 ファイルをコピーする
11.3.2 再帰的にディレクトリやファイルを操作する
11.3.3 shutil:よくある使い方
11.3.4 shutil:ちょっと役立つ周辺知識
11.3.5 shutil:よくあるエラーと対処法
Chapter12 データ圧縮、アーカイブと永続化
12.1 gzip圧縮ファイルを扱う ─ gzip
12.1.1 gzipファイルを圧縮、展開する
12.1.2 gzip:よくある使い方
12.1.3 gzip:ちょっと役立つ周辺知識
12.1.4 gzip:よくあるエラーと対処法
12.2 ZIPファイルを扱う ─ zipfile
12.2.1 ZIPファイルを操作する
12.2.2 日本語のファイル名を扱う
12.2.3 zipfile:よくある使い方
12.2.4 zipfile:ちょっと役立つ周辺知識
12.2.5 zipfile:よくあるエラーと対処法
12.3 tarファイルを扱う ─ tarfile
12.3.1 tarファイルを操作する
12.3.2 tarfile:よくある使い方
12.3.3 tarfile:ちょっと役立つ周辺知識
12.3.4 tarfile:よくあるエラーと対処法
12.4 Pythonオブジェクトをシリアライズする ─ pickle
12.4.1 Pythonオブジェクトのシリアライズとデシリアライズ
12.4.2 pickleのプロトコルバージョン
12.4.3 pickle:よくある使い方
12.4.4 pickle:よくあるエラーと対処法
Chapter13 特定のデータフォーマットを扱う
13.1 CSVファイルを扱う ─ csv
13.1.1 CSVファイルの読み込みと書き込み
13.1.2 辞書データを用いたCSVファイルの読み込みと書き込み
13.1.3 csv:よくある使い方
13.1.4 csv:ちょっと役立つ周辺知識
13.1.5 csv:よくあるエラーと対処法
13.2 JSONを扱う ─ json
13.2.1 JSONのエンコードとデコード
13.2.2 JSONのエンコードとデコード(ファイルオブジェクト)
13.2.3 json:よくある使い方
13.2.4 json:ちょっと役立つ周辺知識
13.2.5 json:よくあるエラーと対処法
13.3 INIファイルを扱う ─ configparser
13.3.1 INIファイルを読み込む
13.3.2 INIファイルの高度な利用
13.3.3 configparser:よくあるエラーと対処法
13.4 YAMLを扱う ─ PyYAML
13.4.1 PyYAMLのインストール
13.4.2 YAMLファイルの読み込み
13.4.3 YAMLファイルの書き込み
13.4.4 PyYAML:ちょっと役立つ周辺知識
13.5 Excelを扱う ─ openpyxl
13.5.1 openpyxlのインストール
13.5.2 Excelの読み込み
13.5.3 Excelの書き込み
13.5.4 スタイルの適用
13.5.5 チャートの挿入
13.5.6 openpyxl:よくある使い方
13.5.7 openpyxl:ちょっと役立つ周辺知識
13.5.8 openpyxl:よくあるエラーと対処法
13.6 画像を扱う ─ Pillow
13.6.1 Pillowのインストール
13.6.2 画像のサイズを変更する・回転する
13.6.3 テキストの埋め込み
13.6.4 Pillow:よくある使い方
13.6.5 Pillow:よくあるエラーと対処法
Chapter14 インターネット上のデータを扱う
14.1 URLをパースする ─ urllib.parse
14.1.1 URLをパースする ─ urlparse()
14.1.2 クエリ文字列をパースする ─ parse_qs()
14.1.3 クエリ文字列を組み立てる ─ urlencode()
14.1.4 URLとして使用できる文字列に変換する ─ quote()、quote_plus()
14.1.5 URLを結合する ─ urljoin()
14.1.6 urllib.parse:よくある使い方
14.1.7 urllib.parse:よくあるエラーと対処法
14.2 URLを開く ─ urllib.request
14.2.1 指定のURLを開く ─ urlopen()
14.2.2 GET、POST以外のHTTPメソッドを扱う
14.2.3 レスポンスモジュール
14.2.4 urllib.request:よくある使い方
14.2.5 urllib.request:ちょっと役立つ周辺知識
14.2.6 urllib.request:よくあるエラーと対処法
14.3 ヒューマンフレンドリーなHTTPクライアント ─ Requests
14.3.1 指定のURLを開く
14.3.2 Requests:よくある使い方
14.3.3 Requests:ちょっと役立つ周辺知識
14.3.4 Requests:よくあるエラーと対処法
14.4 Base16、Base64などへエンコードする ─ base64
14.4.1 Base64にエンコードする
14.4.2 Base64からデコードする
14.4.3 base64:よくある使い方
14.4.4 base64:ちょっと役立つ周辺知識
14.5 電子メールのデータを処理する ─ email
14.5.1 メッセージのデータを管理する ─ email.message
14.5.2 メールを解析する ─ email.parser
14.5.3 email:ちょっと役立つ周辺知識
Chapter15 HTML/XMLを扱う
15.1 XMLをパースする ─ ElementTree
15.1.1 XMLのパース
15.1.2 要素の取得や検索
15.1.3 ElementTree:よくある使い方
15.1.4 ElementTree:ちょっと役立つ周辺知識
15.2 XML/HTMLを高速かつ柔軟にパースする ─ lxml
15.2.1 lxmlのインストール
15.2.2 HTMLをパースする
15.2.3 HTMLを書き換える
15.2.4 整形式ではない(non well-formed)XMLをパースする
15.2.5 lxml:よくある使い方
15.2.6 lxml:ちょっと役立つ周辺知識
15.3 使いやすいHTMLパーサーを利用する ─ Beautiful Soup 4
15.3.1 Beautiful Soup 4のインストール
15.3.2 html5libのインストール
15.3.3 BeautifulSoupオブジェクトの作成
15.3.4 HTML内の要素の情報を取得する
15.3.5 HTML内の要素を検索する
15.3.6 テキストの取得
15.3.7 特定要素から親、兄弟、前後の要素の取得.
15.3.8 Beautiful Soup 4:よくある使い方
15.3.9 Beautiful Soup 4:ちょっと役立つ周辺知識
15.3.10 Beautiful Soup 4:よくあるエラーと対処法
Chapter16 テスト
16.1 対話的な実行例をテストする ─ doctest
16.1.1 doctestを作成する
16.1.2 テキストファイル中の実行例をテストする.
16.1.3 doctest:よくある使い方
16.1.4 doctest:ちょっと役立つ周辺知識
16.1.5 doctest:よくあるエラーと対処法
16.2 ユニットテストフレームワークを利用する ─ unittest
16.2.1 テストを作成して実行する
16.2.2 さまざまな条件や失敗を記述する
16.2.3 1つのテストメソッドの中で複数のアサーションメソッドを呼ぶ ─ subTest()
16.2.4 テストの事前準備を行う ─ setUp()、setUpClass()
16.2.5 テストの事後処理を行う ─ tearDown()、tearDownClass()
16.2.6 コマンドラインインターフェースを利用する
16.2.7 unittest:よくある使い方
16.2.8 unittest:ちょっと役立つ周辺知識
16.2.9 unittest:よくあるエラーと対処法
16.3 モックを利用してユニットテストを行う ─ unittest.mock
16.3.1 モックオブジェクトを作成して戻り値や例外を設定する ─ Mock、MagicMock
16.3.2 クラスやメソッドをモックで置き換える ─ patch()
16.3.3 モックオブジェクトが呼び出されたかどうかを確認する
16.3.4 unittest.mock:よくある使い方
16.3.5 unittest.mock:ちょっと役立つ周辺知識
16.3.6 unittest.mock:よくあるエラーと対処法
16.4 高度なユニットテスト機能を利用する ─ pytest
16.4.1 pytest のインストール
16.4.2 テストを作成して実行する
16.4.3 自動的にテストを探して実行する
16.4.4 複数の入出力パターンについてテストする(パラメタライズドテスト)
16.4.5 テスト実行の前後に処理を挿入するfixtureを書く
16.4.6 pytest:よくある使い方
16.4.7 pytest:ちょっと役立つ周辺知識
16.4.8 pytest:よくあるエラーと対処法
16.5 ドキュメント生成とオンラインヘルプシステム ─ pydoc
16.5.1 モジュールのドキュメントを確認する
16.5.2 モジュールのドキュメントを書く
16.5.3 モジュールのドキュメントをHTML形式で生成する
16.5.4 HTTPサーバーを起動してブラウザーからドキュメントを確認する
16.5.5 pydoc:よくある使い方
16.5.6 pydoc:ちょっと役立つ周辺知識
16.5.7 pydoc:よくあるエラーと対処法
Chapter17 デバッグ
17.1 対話的なデバッグを行う ─ pdb、breakpoint
17.1.1 代表的なデバッガーコマンド
17.1.2 pdbでブレークポイントを挿入する
17.1.3 breakpoint()関数でブレークポイントを挿入する
17.1.4 Pythonの対話モードからデバッグを行う
17.1.5 異常終了するスクリプトをデバッグする ─ pdb.pm()
17.1.6 pdb、breakpoint:よくある使い方
17.1.7 pdb、breakpoint:ちょっと役立つ周辺知識
17.1.8 pdb、breakpoint:よくあるエラーと対処法
17.2 コードの実行時間を計測する ─ timeit
17.2.1 コマンドラインインターフェースで計測する
17.2.2 Pythonインターフェースで計測する
17.2.3 timeit:よくある使い方
17.2.4 timeit:ちょっと役立つ周辺知識
17.2.5 timeit:よくあるエラーと対処法
17.3 スタックトレースを扱う ─ traceback
17.3.1 スタックトレースを出力する
17.3.2 スタックトレースを文字列として扱う
17.3.3 traceback:よくある使い方
17.3.4 traceback:ちょっと役立つ周辺知識
17.3.5 traceback:よくあるエラーと対処法
17.4 ログを出力する ─ logging
17.4.1 3つのロギング設定方法
17.4.2 標準で定義されているログレベル
17.4.3 loggingモジュールからログを扱う
17.4.4 モジュール方式でロギングを設定する
17.4.5 辞書やファイルからロギングを設定する
17.4.6 logging:よくある使い方
17.4.7 logging:ちょっと役立つ周辺知識
17.4.8 logging:よくあるエラーと対処法
Chapter18 暗号関連
18.1 安全な乱数を生成する ─ secrets
18.1.1 パスワード(乱数)の生成
18.1.2 トークンの生成
18.1.3 secrets:よくある使い方
18.1.4 secrets:ちょっと役立つ周辺知識
18.2 ハッシュ値を生成する ─ hashlib
18.2.1 さまざまなアルゴリズムを使用したハッシュ値算出
18.2.2 hashlibによる鍵導出関数
18.2.3 hashlib:よくある使い方.
18.2.4 hashlib:ちょっと役立つ周辺知識
18.2.5 hashlib:よくあるエラーと対処法
18.3 暗号化ライブラリ ─ cryptography
18.3.1 cryptographyのインストール
18.3.2 共通鍵暗号による暗号化と復号
18.3.3 公開鍵暗号による暗号化と復号
18.3.4 cryptography:よくある使い方
18.3.5 cryptography:ちょっと役立つ周辺知識
Chapter19 並行処理、並列処理
19.1 イベントループでの非同期処理 ─ asyncio
19.1.1 非同期I/Oで並行処理を実現するasyncio
19.1.2 並行処理と非同期I/O
19.1.3 コルーチンの定義と実行
19.1.4 タスクを利用した並行処理とイベントループの役割
19.1.5 asyncioの基本的な機能
19.1.6 実践的な使い方の例
19.1.7 asyncio:よくある使い方
19.1.8 asyncio:ちょっと役立つ周辺知識
19.1.9 asyncio:よくあるエラーと対処法
19.2 マルチプロセス、マルチスレッドをシンプルに行う ─ concurrent.futures
19.2.1 機能の概要
19.2.2 まとめて処理を実行し、まとめて結果を受け取るmap()メソッド
19.2.3 concurrent.futures:よくある使い方
19.2.4 concurrent.futures:ちょっと役立つ周辺知識
19.2.5 concurrent.futures:よくあるエラーと対処法
19.3 サブプロセスを管理する ─ subprocess
19.3.1 子プロセスを実行する
19.3.2 run()関数で設定可能な主な引数
19.3.3 より高度にサブプロセスを実行する
19.3.4 subprocess:よくある使い方
19.3.5 subprocess:よくあるエラーと対処法