書籍概要

Pythonエンジニア育成推進協会監修 Python実践レシピ

著者
発売日
更新日

概要

Pythonでプログラムを作成するときに役立つ機能とライブラリを網羅した,実践的なレシピ集です。本書を使いこなして,Pythonプログラマーとして大きなステップアップを図りましょう。
本書では,Pythonが提供する,環境構築,コーディング規約,言語仕様,オブジェクト指向をサポートするクラス,型をアノテーションとして付けられる型ヒントなどに関する実践で役立つ機能を幅広く網羅しています。さらに標準ライブラリとよく使われるサードパーティライブラリとして,テキスト処理,数値処理,日付・時刻処理,データ型,アルゴリズム,ファイルとディレクトリへのアクセス,データ圧縮・アーカイブ・永続化,特定データフォーマットやインターネット上データの扱い,HTMLの扱い,テスト,デバッグ,暗号,並行処理・並列処理までの活用法を紹介します。よくある使い方,よくあるエラーや周辺知識なども加えられており,プログラミングのヒントが満載です。

こんな方におすすめ

  • Pythonでプログラミングしている方
  • Pythonの基本的な文法を学習して,実際にプログラミングを行いたい方

サンプル

目次

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:よくあるエラーと対処法

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2022年6月17日最終更新)

P.51:コード冒頭「処理の実行時間を計測するコンテキストマネージャー」先頭行に以下1行を追加

@contextlib.contextmanager
from time import time, sleep
@contextlib.contextmanager

(以下2022年3月14日更新)

P.9:本文9行目

わかりくい場合
わかりくい場合

P.14:仮想環境の無効化 コマンド画面

$ python -V Pythonのバージョンが異なる
$ python -V システムのPythonのバージョンが表示される

P.36:本文 2行目

isual Studio
Visual Studio

P.72:本文 2行目

(p.71)
p.208

P.73:本文 2行目

処理は一度しか実行されていません。変数に代入しただけで指定した回数分実行されているつもりが、実際は一度しか処理されていなかったということを防ぐために、
ジェネレーターオブジェクトが返されるのみで処理は実行されていません。 next()関数を使用することでyield文までの処理が一度実行されます。変数への代入や、 next()関数を一度呼び出しただけで指定した回数分実行されているつもりが、実際は処理されていなかったということを防ぐために、

P.73:「ジェネレーターを変数に代入したことで起こしやすいミス」の最終行


>>> gen = multiplier()  # 変数に代入しただけではdb_update()は実行されない

>>> gen = multiplier()  # 変数に代入しただけではdb_update()は実行されない
>>> next(gen)  # db_update()が一度実行される

P.132:「表:フォーマットの指定方法一覧」の2行目

:^-30
:-^30

P.198:bisect_left(a, x, lo=0, hi=len(a))の引数

hi:検索開始終了を指定する。
hi:検索終了位置を指定する。

P.199:insort_left(a, x, lo=0, hi=len(a))の引数

hi:検索開始終了を指定する。
hi:検索終了位置を指定する。

P.202:9.4.2  定数を呼び出すの「定数を呼び出す方法」5行目

>>> Nengo(5)
>>> Nengo(3)

P.230:「表:BytesIOクラスのメソッド」内「read(size=-1)」の「戻り値」

str
bytes

P.239:1行目

finallyを使ってsys.exit()が呼ばれる前に必要な処理を実行する
finallyを使ってsys.exit()が呼ばれた後に必要な処理を実行する

P.239:10行目

withを使ってsys.exit()が呼ばれる前に必要な処理を実行する
withを使ってsys.exit()が呼ばれた後に必要な処理を実行する

P.241:「表:ArgumentParserの初期化引数」内「fromfile_prefix_chars」の解説

引数をファイルに記述して読む込む際
引数をファイルに記述して読み込む際

P.278:「表:pickleモジュールの主な関数」の「関数名」最終行

encoding="ASCII", errors="strict", buffers=None
encoding="ASCII", errors="strict", buffers=None)

P.336:「14.4.1  Base64にエンコードする」の本文1行目,「b64encode(s, altchars=None)」の「引数」altchars,「b64encode(s, altchars=None)」の下の解説文(4箇所)

バイト文字列
バイト列

P.337:「Base64のエンコード」の続き,3行目

>>> base64.b64encode(s.encode()) バイト文字列にエンコードして渡す
>>> base64.b64encode(s.encode()) バイト列にエンコードして渡す

P.337:「14.4.2  Base64からデコードする」の本文1行目,「b64decode(s, altchars=None, validate=False)」の「引数」s,altchars(3箇所)

バイト文字列
バイト列

P.434:「encrypt(data)」および「decrypt(data)」の「引数」「戻り値」(4箇所)

バイト文字列
バイト列

P.438:「encrypt(plaintext, padding)」の「引数」plaintext

バイト文字列
バイト列

P.439:「class hazmat.primitives.asymmetric.padding.OAEP(mgf, algorithm, label)」の「引数」label

バイト文字列
バイト列

P.439:「メッセージの暗号化」の下から3行目

バイト文字列
バイト列

P.469:「19.3.2  run()関数で設定可能な主な引数」内,run()関数表組みの「引数」「stdout」「stderr」の脚注

※1
※4

P.469:「19.3.2  run()関数で設定可能な主な引数」内,run()関数表組みの「引数」「errors」の脚注

※2 ※3
※5 ※6

P.469:「19.3.2  run()関数で設定可能な主な引数」内,run()関数表組みの「引数」「text」「universal_newlines」の脚注

※2
※5

ダウンロード

サンプルコードのダウンロード

(2022年3月17日更新)

本書内に掲載しているサンプルコードを以下からダウンロードできます。圧縮ファイルになっていますので,解凍したうえでご利用ください。

ダウンロード
python実践レシピサンプルコード.zip

免責:本サンプルコードを使用することによって,使用者が受けたあらゆる不利益に対して,著者および技術評論社はその責任を負いません。

商品一覧