データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。本書は、ベストセラー『入門 Python 3』の6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。Python 3.9に対応し、f文字列などの新機能も追加され大幅にボリュームアップしました。Pythonの機能をひと通り網羅し、リファレンスとしても便利です。
入門 Python 3 第2版
Bill Lubanovic 著、鈴木 駿 監訳、長尾 高弘 訳
- TOPICS
- Programming , Python
- 発行年月日
- 2021年03月
- PRINT LENGTH
- 800
- ISBN
- 978-4-87311-932-8
- 原書
- Introducing Python 2nd Editon
- FORMAT
- Print PDF EPUB
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
第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の解答
【誤】
■P. 692 復習課題10.7の解答
【誤】
■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"というのは、
■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 終わりに 索引