入門 Python 3 第2版

[cover photo]
TOPICS
Programming , Python
発行年月日
PRINT LENGTH
800
ISBN
978-4-87311-932-8
原書
Introducing Python 2nd Editon
FORMAT
Print PDF EPUB
Ebook
4,180円
Ebookを購入する
Print
4,180円

データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。本書は、ベストセラー『入門 Python 3』の6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。Python 3.9に対応し、f文字列などの新機能も追加され大幅にボリュームアップしました。Pythonの機能をひと通り網羅し、リファレンスとしても便利です。

正誤表

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

第1刷正誤表

※2022年4月更新

■P. xviii ウェブページURL
【誤】http://www.oreilly.co.jp/books/978-4-87311-932-8
【正】https://www.oreilly.co.jp/books/9784873119328

■P. 45 5行目
【誤】10e8は10の8乗という意味で、1000000000.0を意味する
【正】1.0e8は10の8乗という意味で、100000000.0を意味する

■P. 59 下から6行目
【誤】(1000個のゼロが続く)
【正】(1の後ろに1000個の0が続く)

■P.103 復習課題5.5の問題文
【誤】'animals'、'percent'、'spokesman'、'job_title'に値を代入しよう。
【正】'animals'、'amount'、'percent'、'spokesman'、'job_title'に値を代入しよう。

■P. 114 下から6行目
【誤】括弧のに1つのものしか含まれておらず
【正】括弧の中に1つのものしか含まれておらず

■P.118 「7.2.1 []による作成」のコード8行目
【誤】>>> randomness = ['Punxsatawney", {"groundhog": "Phil"}, "Feb. 2"}
【正】>>> randomness = ["Punxsatawney", {"groundhog": "Phil"}, "Feb. 2"]

■P. 214 2行目
【誤】Catオブジェウト
【正】Catオブジェクト

■P. 344 上から3行目のコード
【誤】>>> with os.scandir("poems") as it:
【正】>>> with os.scandir() as it:

■P. 354 例5-1のコード8行目
【誤】p = multiprocessing.Process(target=whoami, args=(f"I'm function {n}"))
【正】p = multiprocessing.Process(target=whoami, args=(f"I'm function {n}",))

■P.675 復習課題5.5の問題文
【誤】'animals'、'percent'、'spokesman'、'job_title'に値を代入しよう。
【正】'animals'、'amount'、'percent'、'spokesman'、'job_title'に値を代入しよう。

■P.678 復習課題5.5の解答
【誤】startはguess_me以下にはならず、かならずguess_meよりも大きくなるはずなので(少なくともこの宇宙では)、elif start > guess_me:の行はただのelse:でもかまわない。
【正】numberはguess_me以下にはならず、かならずguess_meよりも大きくなるはずなので(少なくともこの宇宙では)、elif number > guess_me:の行はただのelse:でもかまわない。

■P. 691 復習課題10.6の解答
【誤】
class Element:
    def __init__(self, name, symbol, number):
        self.name = name
        self.symbol = symbol
        self.number = number
    def dump(self):
        print(f'{name=}, {symbo=}, {number=}')

hydrogen = Element(**el_dict)
hydrogen.dump()
【正】
class Element:
    def __init__(self, name, symbol, number):
        self.name = name
        self.symbol = symbol
        self.number = number
    def dump(self):
        print(f'name={self.name}, symbol={self.symbol}, number={self.number}')

el_dict = {'name': 'Hydrogenation ', 'symbol': 'H', 'number': 1}
hydrogen = Element(**el_dict)
hydrogen.dump()

■P. 692 復習課題10.7の解答
【誤】
class Element:
    def __init__(self, name, symbol, number):
        self.name = name
        self.symbol = symbol
        self.number = number
    def __str__(self):
        return f'={name=}, {symbol=}, {number=}'
【正】
class Element:
    def __init__(self, name, symbol, number):
        self.name = name
        self.symbol = symbol
        self.number = number
    def __str__(self):
        return f'name={self.name}, symbol={self.symbol}, number={self.number}'

第2刷正誤表

※2024年3月更新

■P. 15 下から2行目
【誤】「小さい兄のことなんか放っとけ!」
【正】「弟のことなんか放っとけ!」

■P. 138 14~15行目
【誤】number % 2
【正】number % 2 == 1

■P. 296 上から3行目
【誤】__expr__
【正】expr

■P. 296 表12-3下から2つめの項目
【誤】(?<= prev )
【正】(?<= prev ) next

■P. 296 表12-3一番下の項目
【誤】(?<! prev )
【正】(?<! prev ) next

■P. 303 下から6行目、コード
【誤】>>> data[20:24]0x9a
【正】>>> data[20:24]

■P. 440 上から7行目
【誤】第1のプログラムがクライアントで第2のプログラムがサーバだ。
【正】第1のプログラムがサーバで第2のプログラムがクライアントだ。

■P. 544 下から4行目
【誤】このバグのフィックスは章末の復習問題になっている。
【正】このバグ修正は読者の宿題としよう。

■P. 570 下から9行目コードリスト
【誤】[master (root-commit) 52d60d7] my first commit
【正】[master (root-commit) 52d60d7] simple print program

■P. 570 下から6行目
【誤】-m "my first commit"というのは、
【正】-m "simple print program"というのは、

目次

監訳者まえがき
まえがき

第Ⅰ部 Pythonの基礎

1章 Pyの味見
    1.1 なぞなぞ
    1.2 小さなプログラム
    1.3 少し大きなプログラム
    1.4 現実の世界でのPython
    1.5 Pythonと惑星Xの他言語の比較
    1.6 では、なぜPythonなのか
    1.7 Pythonを避けるべきとき
    1.8 Python 2かPython 3か
    1.9 Pythonのインストール
    1.10 Pythonの実行
        1.10.1 対話型インタプリタの使い方
        1.10.2 Pythonファイルの使い方
        1.10.3 このあとはどうなる?
    1.11 The Zen of Python
    1.12 次章では
    1.13 復習課題

2章 データ:型、値、変数、そして名前
    2.1 Pythonのデータはオブジェクトである
    2.2 型
    2.3 ミュータビリティ
    2.4 リテラル値
    2.5 変数
    2.6 代入
    2.7 変数は名前であって場所ではない
    2.8 複数の名前への代入
    2.9 名前への再代入
    2.10 コピー
    2.11 適切な変数名の選択
    2.12 次章では
    2.13 復習課題

3章 数値
    3.1 ブール値
    3.2 整数
        3.2.1 リテラル整数
        3.2.2 整数の演算
        3.2.3 整数と変数
        3.2.4 優先順位
        3.2.5 基数
        3.2.6 型の変換
        3.2.7 intはどれくらい大きいのか
    3.3 浮動小数点数
    3.4 数学関数
    3.5 次章では
    3.6 復習課題

4章 ifによる選択
    4.1 #によるコメント
    4.2 \による行の継続
    4.3 if、elif、elseによる比較
    4.4 Trueとは何か
    4.5 inによる多重比較
    4.6 新機能:セイウチ演算子
    4.7 次章では
    4.8 復習課題

5章 文字列
    5.1 クォートによる作成
    5.2 str()による作成
    5.3 \によるエスケープ
    5.4 +による連結
    5.5 *による繰り返し
    5.6 []による文字の抽出
    5.7 スライスによる部分文字列の取り出し
    5.8 len()による長さの取得
    5.9 split()による分割
    5.10 join()による結合
    5.11 replace()による置換
    5.12 strip()による除去
    5.13 探索と選択
    5.14 大文字と小文字の区別
    5.15 配置
    5.16 フォーマット(書式指定)
        5.16.1 古いスタイル
        5.16.2 新しいスタイル:{}とformat()
        5.16.3 最新スタイル:f 文字列
    5.17 その他の文字列操作関数
    5.18 次章では
    5.19 復習課題

6章 whileとforによるループ
    6.1 whileによる反復処理
        6.1.1 breakによるループの中断
        6.1.2 continueによる次のイテレーションの開始
        6.1.3 elseによるbreakのチェック
    6.2 forとinによる反復処理
        6.2.1 breakによる中断
        6.2.2 continueによる次のイテレーションの開始
        6.2.3 elseによるbreakのチェック
        6.2.4 range()による数値シーケンスの生成
    6.3 その他のイテレータ
    6.4 次章では
    6.5 復習課題

7章 タプルとリスト
    7.1 タプル
        7.1.1 カンマと()による作成
        7.1.2 tuple()による生成
        7.1.3 +による連結
        7.1.4 *による繰り返し
        7.1.5 タプルの比較
        7.1.6 forとinによる反復処理
        7.1.7 タプルの書き換え
    7.2 リスト
        7.2.1 []による作成
        7.2.2 list()による生成、変換
        7.2.3 split()による文字列からのリストの作成
        7.2.4 [offset]を使った要素の取り出し
        7.2.5 スライスによる要素の取り出し
        7.2.6 append()による末尾への要素の追加
        7.2.7 insert()によるオフセットを指定した要素の追加
        7.2.8 *による全要素の繰り返し
        7.2.9 extend()または+=によるリストの連結
        7.2.10 [offset]による要素の書き換え
        7.2.11 スライスによる要素の書き換え
        7.2.12 delによるオフセットを指定した要素の削除
        7.2.13 remove()による値を指定した要素の削除
        7.2.14 pop()でオフセットを指定して要素を取り出し、削除する方法
        7.2.15 clear()によるすべての要素の削除
        7.2.16 index()で要素の値から要素のオフセットを調べる方法
        7.2.17 inによる値の有無のテスト
        7.2.18 count()による値の個数の計算
        7.2.19 join()による文字列への変換
        7.2.20 sort()、sorted()による要素の並べ替え
        7.2.21 len()による長さの取得
        7.2.22 =による代入
        7.2.23 copy()、list()、スライスによるコピー
        7.2.24 deepcopy()によるすべての要素のコピー
        7.2.25 リストの比較
        7.2.26 forとinによる反復処理
        7.2.27 zip()による複数のシーケンスの反復処理
        7.2.28 リスト内包表記による作成
        7.2.29 リストのリスト
    7.3 タプルとリストの比較
    7.4 タプル内包表記はない
    7.5 次章では
    7.6 復習課題

8章 辞書と集合
    8.1 辞書
        8.1.1 {}による生成
        8.1.2 dict()による生成
        8.1.3 dict()による変換
        8.1.4 [key]による要素の追加、変更
        8.1.5 [key]かget()による要素の取得
        8.1.6 keys()によるすべてのキーの取得
        8.1.7 values()によるすべてのバリューの取得
        8.1.8 items()によるすべてのキー/バリューペアの取得
        8.1.9 len()による長さの取得
        8.1.10 {**a, **b}による辞書の結合
        8.1.11 update()による辞書の結合
        8.1.12 delによる指定したキーを持つ要素の削除
        8.1.13 pop()による指定したキーを持つ要素の取得と削除
        8.1.14 clear()によるすべての要素の削除
        8.1.15 inを使ったキーの有無のテスト
        8.1.16 =による代入
        8.1.17 copy()によるコピー
        8.1.18 deepcopy()によるすべての要素のコピー
        8.1.19 辞書の比較
        8.1.20 forとinによる反復処理
        8.1.21 辞書内包表記
    8.2 集合
        8.2.1 set()による生成
        8.2.2 set()による変換
        8.2.3 len()による要素数の取得
        8.2.4 add()による要素の追加
        8.2.5 remove()による要素の削除
        8.2.6 forとinによる反復処理
        8.2.7 inによる値の有無のテスト
        8.2.8 組み合わせと集合演算
        8.2.9 集合内包表記
        8.2.10 frozenset()によるイミュータブルな集合の作成
    8.3 今までに取り上げてきたデータ構造
    8.4 もっと大きいデータ構造
    8.5 次章では
    8.6 復習課題

9章 関数
    9.1 defによる関数の定義
    9.2 丸括弧による関数呼び出し
    9.3 実引数と仮引数
        9.3.1 Noneは役に立つ
        9.3.2 位置引数
        9.3.3 キーワード引数
        9.3.4 デフォルト引数値の指定
        9.3.5 *による位置引数の分解/接合(タプル化)
        9.3.6 **によるキーワード引数の分解/接合(辞書化)
        9.3.7 キーワード専用引数
        9.3.8 ミュータブル引数とイミュータブル引数
    9.4 docstring
    9.5 第一級オブジェクトとしての関数
    9.6 関数内関数
        9.6.1 クロージャ
    9.7 無名関数(ラムダ関数)
    9.8 ジェネレータ
        9.8.1 ジェネレータ関数
        9.8.2 ジェネレータ内包表記
    9.9 デコレータ
    9.10 名前空間とスコープ
    9.11 名前の中の_と__
    9.12 再帰
    9.13 非同期関数
    9.14 例外
        9.14.1 tryとexceptによるエラー処理
        9.14.2 独自例外の作成
    9.15 次章では
    9.16 復習課題

10章 オブジェクトとクラス
    10.1 オブジェクトとは何か
    10.2 単純なオブジェクト
        10.2.1 classによるクラスの定義
        10.2.2 属性
        10.2.3 メソッド
        10.2.4 初期化
    10.3 継承
        10.3.1 親クラスからの継承
        10.3.2 メソッドのオーバーライド
        10.3.3 メソッドの追加
        10.3.4 super()による親への支援要請
        10.3.5 多重継承
        10.3.6 ミックスイン
    10.4 self の自己弁護
    10.5 属性へのアクセス
        10.5.1 直接アクセス
        10.5.2 ゲッターとセッター
        10.5.3 属性アクセスのためのプロパティ
        10.5.4 計算された値のためのプロパティ
        10.5.5 属性を隠すための名前のマングリング
        10.5.6 クラスの属性とインスタンスの属性
    10.6 メソッドのタイプ
        10.6.1 インスタンスメソッド
        10.6.2 クラスメソッド
        10.6.3 静的メソッド
    10.7 ダックタイピング
    10.8 特殊メソッド
    10.9 集約とコンポジション
    10.10 オブジェクトとその他のものの使い分けの方法
    10.11 名前付きタプル
    10.12 データクラス
    10.13 attrs
    10.14 次章では
    10.15 復習課題

11章 モジュール、パッケージ、標準ライブラリ
    11.1 モジュールとimport文
        11.1.1 モジュールのインポート
        11.1.2 別名によるモジュールのインポート
        11.1.3 必要なものだけをインポートする方法
    11.2 パッケージ
        11.2.1 モジュール検索パス
        11.2.2 相対インポートと絶対インポート
        11.2.3 名前空間パッケージ
        11.2.4 モジュールかオブジェクトか
    11.3 Python標準ライブラリ
        11.3.1 setdefault()とdefaultdict()による存在しないキーの処理
        11.3.2 Counter()による要素数の計算
        11.3.3 OrderedDict()によるキー順のソート
        11.3.4 スタック+キュー==デック
        11.3.5 itertoolsによるコード構造の反復処理
        11.3.6 pprint()によるきれいな表示
        11.3.7 ランダムな値
    11.4 バッテリーの補充:ほかのPythonコードの入手方法
    11.5 次章では
    11.6 復習課題

第Ⅱ部 Pythonの実践

12章 データの自在な操作
    12.1 文字列:Unicode
        12.1.1 Python 3のUnicode文字列
        12.1.2 UTF-8
        12.1.3 エンコーディング
        12.1.4 デコーディング
        12.1.5 HTMLエンティティ
        12.1.6 正規化
        12.1.7 詳しく学びたい人のために
    12.2 正規表現
        12.2.1 match()による文字列の先頭の正確なマッチ
        12.2.2 search()による最初のマッチの検索
        12.2.3 findall()によるすべてのマッチの検索
        12.2.4 split()によるマッチを利用した分割
        12.2.5 sub()によるマッチした部分の置換
        12.2.6 パターンの特殊文字
        12.2.7 パターン:メタ文字
        12.2.8 パターン:マッチした文字列の出力の指定
    12.3 バイナリデータ
        12.3.1 bytesとbytearray
        12.3.2 structによるバイナリデータの変換
        12.3.3 その他のバイナリデータツール
        12.3.4 binasciiによるバイト/文字列の変換
        12.3.5 ビット演算子
    12.4 次章では
    12.5 復習課題

13章 カレンダーとクロック
    13.1 うるう年
    13.2 datetimeモジュール
    13.3 timeモジュールの使い方
    13.4 日時の読み書き
    13.5 変換のすべて
    13.6 代替モジュール
    13.7 次章では
    13.8 復習課題

14章 ファイルとディレクトリ
    14.1 ファイル入出力
        14.1.1 open()による作成、オープン
        14.1.2 print()によるテキストファイルへの書き込み
        14.1.3 write()によるテキストファイルへの書き込み
        14.1.4 read()、readline()、readlines()によるテキストファイルの読み出し
        14.1.5 write()によるバイナリファイルの書き込み
        14.1.6 read()によるバイナリファイルの読み出し
        14.1.7 withによるファイルの自動的なクローズ
        14.1.8 seek()による位置の変更
    14.2 メモリマッピング
    14.3 ファイル操作
        14.3.1 exists()によるファイルが存在することのチェック
        14.3.2 isfile()によるファイルタイプのチェック
        14.3.3 copy()によるコピー
        14.3.4 rename()によるファイル名の変更
        14.3.5 link()、symlink()によるリンク作成
        14.3.6 chmod()によるパーミッションの変更
        14.3.7 chown()によるオーナーの変更
        14.3.8 remove()によるファイルの削除
    14.4 ディレクトリ操作
        14.4.1 mkdir()による作成
        14.4.2 rmdir()による削除
        14.4.3 scandir()によるディレクトリ一覧の作成
        14.4.4 chdir()によるカレントディレクトリの変更
        14.4.5 glob()によるパターンにマッチするファイルのリストの作成
    14.5 パス名
        14.5.1 abspath()によるパス名の取得
        14.5.2 realpath()によるシンボリックリンクパス名の取得
        14.5.3 os.path.join()によるパス名の組み立て
        14.5.4 pathlibの使い方
    14.6 BytesIOとStringIO
    14.7 次章では
    14.8 復習課題

15章 データと時間:プロセスと並行処理
    15.1 プログラムとプロセス
        15.1.1 subprocessによるプロセスの作成
        15.1.2 multiprocessingによるプロセスの作成
        15.1.3 terminate()によるプロセスの強制終了
        15.1.4 osによるシステム情報の入手
        15.1.5 psutilによるプロセス情報の取得
    15.2 コマンドの自動実行
        15.2.1 Invoke
        15.2.2 その他のコマンド実行ヘルパー
    15.3 並行処理
        15.3.1 キュー
        15.3.2 プロセス
        15.3.3 スレッド
        15.3.4 concurrent.futures
        15.3.5 グリーンスレッドとgevent
        15.3.6 twisted
        15.3.7 asyncio
        15.3.8 Redis
        15.3.9 キューを越えて
    15.4 次章では
    15.5 復習課題

16章 データと格納場所:永続記憶
    16.1 フラットテキストファイル
    16.2 パディングされたテキストファイル
    16.3 表形式のテキストファイル
        16.3.1 CSV
        16.3.2 XML
        16.3.3 XMLのセキュリティに関するコメント
        16.3.4 HTML
        16.3.5 JSON
        16.3.6 YAML
        16.3.7 Tablib
        16.3.8 Pandas
        16.3.9 設定ファイル
    16.4 バイナリファイル
        16.4.1 パディングされたバイナリファイルとメモリマッピング
        16.4.2 スプレッドシート
        16.4.3 HDF5
        16.4.4 TileDB
    16.5 リレーショナルデータベース
        16.5.1 SQL
        16.5.2 DB-API
        16.5.3 SQLite
        16.5.4 MySQL
        16.5.5 PostgreSQL
        16.5.6 SQLAlchemy
        16.5.7 その他のデータベースアクセスパッケージ
    16.6 NoSQLデータストア
        16.6.1 dbmファミリ
        16.6.2 memcached
        16.6.3 Redis
        16.6.4 ドキュメントデータベース
        16.6.5 時系列データベース
        16.6.6 グラフデータベース
        16.6.7 その他のNoSQL
    16.7 フルテキストデータベース
    16.8 次章では
    16.9 復習課題

17章 データと空間:ネットワーク
    17.1 TCP/IP
        17.1.1 ソケット
        17.1.2 Scapy
        17.1.3 Netcat
    17.2 ネットワーキングのパターン
    17.3 リクエスト/レスポンスパターン
        17.3.1 ZeroMQ
        17.3.2 その他のメッセージングツール
    17.4 パブリッシュ/サブスクライブパターン
        17.4.1 Redis
        17.4.2 ZeroMQ
        17.4.3 その他のパブサブツール
    17.5 インターネットサービス
        17.5.1 DNS
        17.5.2 Pythonの電子メールモジュール
        17.5.3 その他のプロトコル
    17.6 ウェブサービスとAPI
    17.7 データのシリアライズ
        17.7.1 pickle
        17.7.2 その他のシリアライズ形式
    17.8 RPC
        17.8.1 XML RPC
        17.8.2 JSON RPC
        17.8.3 メッセージパックRPC
        17.8.4 Zerorpc
        17.8.5 gRPC
        17.8.6 Twirp
    17.9 構成管理ツール
    17.10 ビッグデータ
        17.10.1 Hadoop
        17.10.2 Spark
        17.10.3 Disco
        17.10.4 Dask
    17.11 クラウドでの処理
        17.11.1 AWS
        17.11.2 GCP
        17.11.3 Microsoft Azure
        17.11.4 OpenStack
    17.12 Docker
        17.12.1 Kubernetes
    17.13 次章では
    17.14 復習課題

18章 ウェブを解きほぐす
    18.1 ウェブクライアント
        18.1.1 telnetによるテスト
        18.1.2 curlによるテスト
        18.1.3 httpieによるテスト
        18.1.4 httpbinによるテスト
        18.1.5 Pythonの標準ウェブライブラリ
        18.1.6 標準ライブラリを越えて:requests
    18.2 ウェブサーバ
        18.2.1 Pythonによるもっとも単純なウェブサーバ
        18.2.2 WSGI
        18.2.3 ASGI
        18.2.4 Apache
        18.2.5 NGINX
        18.2.6 その他のPythonベースWSGIサーバ
    18.3 ウェブサーバフレームワーク
        18.3.1 Bottle
        18.3.2 Flask
        18.3.3 Django
        18.3.4 その他のフレームワーク
    18.4 データベースフレームワーク
    18.5 ウェブサービスとオートメーション
        18.5.1 webbrowser
        18.5.2 webview
    18.6 Web APIとREST
    18.7 クロールとスクレイピング
        18.7.1 Scrapy
        18.7.2 BeautifulSoup
        18.7.3 Requests-HTML
    18.8 映画を見よう
    18.9 次章では
    18.10 復習課題

19章 パイソニスタになろう
    19.1 プログラミングについて
    19.2 Pythonコードを見つけてこよう
    19.3 パッケージのインストール
        19.3.1 pipの使い方
        19.3.2 venvの使い方
        19.3.3 pipenvの使い方
        19.3.4 パッケージマネージャの使い方
        19.3.5 ソースからのインストール
    19.4 IDE(統合開発環境)
        19.4.1 IDLE
        19.4.2 PyCharm
        19.4.3 IPython
        19.4.4 Jupyter Notebook
        19.4.5 JupyterLab
    19.5 名前とドキュメント
    19.6 型ヒントの追加
    19.7 テスト
        19.7.1 pylint、pyflakes、flake8、pycodestyleによるチェック
        19.7.2 unittestによるテスト
        19.7.3 doctestによるテスト
        19.7.4 noseによるテスト
        19.7.5 その他のテストフレームワーク
        19.7.6 継続的インテグレーション
    19.8 Pythonコードのデバッグ
        19.8.1 print()によるデバッグ
        19.8.2 デコレータによるデバッグ
        19.8.3 pdbによるデバッグ
        19.8.4 breakpoint()によるデバッグ
    19.9 エラーメッセージのロギング
    19.10 コードの最適化
        19.10.1 実行時間の計測
        19.10.2 アルゴリズムとデータ構造
        19.10.3 Cython、NumPy、C拡張
        19.10.4 PyPy
        19.10.5 Numba
    19.11 ソース管理
        19.11.1 Mercurial
        19.11.2 Git
    19.12 プログラムの流通形式
    19.13 さらに学習を深めるために
        19.13.1 書籍
        19.13.2 ウェブサイト
        19.13.3 コミュニティ
        19.13.4 カンファレンス
        19.13.5 Pythonプログラミングの求職
    19.14 次章では
    19.15 復習課題

20章 Pyアート
    20.1 2次元グラフィックス
        20.1.1 標準ライブラリ
        20.1.2 PILとPillow
        20.1.3 ImageMagick
    20.2 3次元グラフィックス
    20.3 3次元動画
    20.4 GUI(グラフィカル・ユーザ・インタフェース)
    20.5 プロット、グラフ、ビジュアライゼーション
        20.5.1 Matplotlib
        20.5.2 Seaborn
        20.5.3 Bokeh
    20.6 ゲーム
    20.7 サウンドと音楽
    20.8 次章では
    20.9 復習課題

21章 ビジネス現場のPy
    21.1 Microsoft Officeスイート
    21.2 ビジネスタスクの遂行
    21.3 ビジネスデータの処理
        21.3.1 ETL(抽出、変換、ロード)
        21.3.2 データのバリデーション
        21.3.3 その他の参考文献、リンク
    21.4 オープンソースのPythonビジネスパッケージ
    21.5 金融界でのPython
    21.6 ビジネスデータのセキュリティ
    21.7 地図
        21.7.1 ファイル形式
        21.7.2 地図の描画
        21.7.3 Geopandas
        21.7.4 その他の地図パッケージ
        21.7.5 アプリケーションとデータ
    21.8 次章では
    21.9 復習課題

22章 科学におけるPy
    22.1 標準ライブラリでの数学と統計
        22.1.1 数学関数
        22.1.2 複素数の操作
        22.1.3 decimalによる正確な浮動小数点数計算
        22.1.4 fractionsによる有理数計算
        22.1.5 arrayによるパッキングされたシーケンス
        22.1.6 statisticsによる単純な統計
        22.1.7 行列の乗算
    22.2 Scientific Python
    22.3 NumPy
        22.3.1 array()による配列の作成
        22.3.2 arange()による配列の作成
        22.3.3 zeros()、ones()、random()による配列の作成
        22.3.4 reshape()による配列の形状の変更
        22.3.5 []による要素の取得
        22.3.6 配列の数学演算
        22.3.7 線形代数
    22.4 SciPy
    22.5 SciKit
    22.6 Pandas
    22.7 Pythonと科学分野
    22.8 次章では
    22.9 復習課題

付録A 初心者プログラマのためのハードウェア、ソフトウェア入門
    A.1 ハードウェア
        A.1.1 原始人のコンピュータ
        A.1.2 電気
        A.1.3 発明
        A.1.4 理想化されたコンピュータ
        A.1.5 CPU
        A.1.6 メモリとキャッシュ
        A.1.7 ストレージ
        A.1.8 入力
        A.1.9 出力
        A.1.10 相対アクセス時間
    A.2 ソフトウェア
        A.2.1 最初はビット
        A.2.2 機械語
        A.2.3 アセンブラ
        A.2.4 高水準言語
        A.2.5 オペレーティングシステム
        A.2.6 仮想マシン
        A.2.7 コンテナ
        A.2.8 分散コンピューティングとネットワーク
        A.2.9 クラウド
        A.2.10 Kubernetes

付録B Python 3のインストール
    B.1 Pythonのバージョンのチェック
    B.2 標準Pythonのインストール
        B.2.1 macOS
        B.2.2 Windows
        B.2.3 Linux/Unix
    B.3 パッケージマネージャpip
    B.4 venv
    B.5 その他のパッケージングソリューション
    B.6 Anacondaのインストール
        B.6.1 condaのインストールと使い方

付録C 話は変わりまして:非同期処理
    C.1 コルーチンとイベントループ
    C.2 asyncioの代替パッケージ
    C.3 非同期とその他の並行処理
    C.4 非同期フレームワークとサーバ

付録D 復習課題の解答
    D.1 1章 Pyの味見
    D.2 2章 データ:型、値、変数、そして名前
    D.3 3章 数値
    D.4 4章 ifによる選択
    D.5 5章 文字列
    D.6 6章 whileとforによるループ
    D.7 7章 タプルとリスト
    D.8 8章 辞書と集合
    D.9 9章 関数
    D.10 10章 オブジェクトとクラス
    D.11 11章 モジュール、パッケージ、標準ライブラリ
    D.12 12章 データの自在な操作
    D.13 13章 カレンダーとクロック
    D.14 14章 ファイルとディレクトリ
    D.15 15章 データと時間:プロセスと並行処理
    D.16 16章 データと格納場所:永続記憶
    D.17 17章 データと空間:ネットワーク
    D.18 18章 ウェブを解きほぐす
    D.19 19章 パイソニスタになろう
    D.20 20章 Pyアート
    D.21 21章 ビジネス現場のPy
    D.22 22章 科学におけるPy

付録E 早見表
    E.1 演算子の優先順位
    E.2 文字列メソッド
        E.2.1 大文字、小文字の操作
        E.2.2 探索
        E.2.3 書き換え
        E.2.4 整形
        E.2.5 文字列のタイプ
    E.3 stringモジュールの属性
    E.4 終わりに

索引