入門 Python 3 第3版

4,620円

内容

データサイエンス、Web開発、セキュリティなど幅広い分野で人気が高まるPython。本書はベストセラー入門書『入門 Python 3』の、5年ぶりの改訂版です。Pythonプログラミングの基礎から、Web、データベース、ネットワーク、並行処理といった応用まで、実務を見据えた内容を明快かつ丁寧に解説します。Pythonの機能を一通り網羅しており、リファレンスとしても有用です。生成AI全盛の今こそ、必要な基本を学べる一冊です。Python 3.14対応。

関連書籍

目次

『Introducing Python, Third Edition』を推薦する
第3版監訳者まえがき
まえがき

第I部 城塞

1章 入門
    1.1 なぞなぞ
    1.2 小さなPython プログラム
    1.3 Python を使うための準備
    1.4 Python のインストール
    1.5 Python のアップグレード
    1.6 Python プログラムの実行方法
        1.6.1 Python のインタプリタ
        1.6.2 Python ファイル
    1.7 Python の組み込み機能
    1.8 Python 標準ライブラリ
    1.9 サードパーティのPython パッケージ
    1.10 もっと大きなコード例
    1.11 復習と予習

2章 データ型と変数
    2.1 コンピュータ
    2.2 ビットとバイト
    2.3 マルチバイトのデータ型
    2.4 変数
        2.4.1 変数への値の代入
        2.4.2 変数の値の変更
        2.4.3 変数の削除
        2.4.4 変数の命名規則
        2.4.5 変数の命名慣習
    2.5 Python のデータ型
    2.6 値の指定
    2.7 メモリ内のプラスチックボックスとしてのオブジェクト
    2.8 復習と予習
    2.9 演習問題

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 decimal 
    3.7 数学計算
    3.8 復習と予習
    3.9 演習問題

4章 文字列
    4.1 クォートによる作成
    4.2 str() による作成
    4.3 \ によるエスケープ
    4.4 + による連結
    4.5 * による繰り返し
    4.6 オフセットによる文字の取得
    4.7 スライスによる部分文字列の取得
    4.8 len() による長さの取得
    4.9 split() による分割
    4.10 join() による連結
    4.11 replace() による置換
    4.12 プレフィックスとサフィックスの操作
    4.13 strip() による除去
    4.14 検索と選択
    4.15 大文字小文字変換
    4.16 アラインメント
    4.17 書式設定
        4.17.1 古いスタイル:% 
        4.17.2 新しいスタイル:{}とformat()
        4.17.3 最新スタイル:フォーマット済み文字列
    4.18 復習と予習
    4.19 演習問題

5章 バイト列
    5.1 bytes 型
        5.1.1 クォートによる作成
        5.1.2 bytes() による作成
        5.1.3 16 進数文字列からの作成
        5.1.4 バイト列と文字列の間のデコード、エンコード
        5.1.5 16 進数文字列への変換
        5.1.6 オフセットによる取得
        5.1.7 スライス
        5.1.8 + による連結
        5.1.9 * による繰り返し
    5.2 bytearray 型
        5.2.1 bytearray() による作成
        5.2.2 オフセットによる取得
        5.2.3 スライス
        5.2.4 オフセットによる変更
        5.2.5 replace() による置き換え
        5.2.6 スライスによる変更
        5.2.7 insert() による挿入
        5.2.8 append() による追加
        5.2.9 extend() による追加
        5.2.10 + による連結
        5.2.11 * による繰り返し
    5.3 復習と予習
    5.4 演習問題

6章 if とmatch 
    6.1 # によるコメント
    6.2 \ による行の継続
    6.3 if、elif、else による比較
    6.4 True とは何か
    6.5 in による複数値の比較
    6.6 セイウチ(ウォルラス)演算子
    6.7 match 文
        6.7.1 単純なmatch 文
        6.7.2 構造的なmatch 文
    6.8 復習と予習
    6.9 演習問題

7章 for とwhile 
    7.1 while による反復処理
        7.1.1 break による中断
        7.1.2 continue によるスキップ
        7.1.3 else によるbreak のチェック
    7.2 for とin による反復処理
        7.2.1 break による中断
        7.2.2 continue によるスキップ
        7.2.3 else によるbreak のチェック
        7.2.4 range() による数値シーケンスの生成
    7.3 復習と予習
    7.4 演習問題

8章 タプルとリスト
    8.1 タプル
        8.1.1 カンマと() による作成
        8.1.2 tuple() による作成
        8.1.3 オフセットによる要素の取得
        8.1.4 + による連結
        8.1.5 * による繰り返し
        8.1.6 比較
        8.1.7 for とin による反復処理
        8.1.8 変更はできない
    8.2 リスト
        8.2.1 [] による作成
        8.2.2 list() による作成、変換
        8.2.3 split() による文字列からのリストの作成
        8.2.4 [] による要素の取得
        8.2.5 スライスによる要素の取得
        8.2.6 append() による末尾への要素の追加
        8.2.7 insert() によるオフセットを指定した要素の追加
        8.2.8 * による繰り返し
        8.2.9 extend() や+ によるリストの連結
        8.2.10 [offset] による要素の変更
        8.2.11 スライスによる要素の変更
        8.2.12 del によるオフセットを指定した要素の削除
        8.2.13 remove() による値を指定した要素の削除
        8.2.14 pop() による要素の取り出しと削除
        8.2.15 clear() によるすべての要素の削除
        8.2.16 index() による要素のオフセットの取得
        8.2.17 in による値の有無のテスト
        8.2.18 count() による値の個数の計算
        8.2.19 join() による文字列への変換
        8.2.20 sort()、sorted() による要素の並べ替え
        8.2.21 len() による長さの取得
        8.2.22 =による代入
        8.2.23 copy()、list()、スライスによるコピー
        8.2.24 deepcopy() によるすべての要素のコピー
        8.2.25 リストの比較
        8.2.26 for とin による反復処理
        8.2.27 zip() による複数のシーケンスの反復処理
        8.2.28 zip_longest() による複数のシーケンスの反復処理
        8.2.29 リスト内包表記による作成
        8.2.30 リストのリスト
    8.3 タプルとリストの比較
    8.4 タプル内包表記はない
    8.5 復習と予習
    8.6 演習問題

9章 辞書と集合
    9.1 辞書
        9.1.1 {}による作成
        9.1.2 dict() による作成
        9.1.3 dict() による変換
        9.1.4 [key] による要素の追加、変更
        9.1.5 [key] またはget() による要素の取得
        9.1.6 for とin による反復処理
        9.1.7 len() による長さの取得
        9.1.8 辞書の連結/変更
        9.1.9 del による指定したキーを持つ要素の削除
        9.1.10 pop() による指定したキーを持つ要素の取得と削除
        9.1.11 clear() によるすべての要素の削除
        9.1.12 in によるキーの有無のテスト
        9.1.13 =による代入
        9.1.14 copy() によるコピー
        9.1.15 deepcopy() によるすべての要素のコピー
        9.1.16 辞書の比較
        9.1.17 辞書内包表記による作成
    9.2 集合
        9.2.1 set() または{}による作成
        9.2.2 len() による長さの取得
        9.2.3 add() による要素の追加
        9.2.4 remove() による要素の削除
        9.2.5 | による連結
        9.2.6 for とin による反復処理
        9.2.7 in による値の有無のテスト
        9.2.8 組み合わせと集合演算
        9.2.9 集合内包表記による作成
        9.2.10 frozenset() によるイミュータブルな集合の作成
    9.3 復習と予習
    9.4 演習問題

10章 関数
    10.1 def による関数の定義
    10.2 丸括弧による関数呼び出し
    10.3 実引数と仮引数
        10.3.1 None と真偽判定
        10.3.2 位置引数
        10.3.3 キーワード引数
        10.3.4 デフォルト引数
        10.3.5 * による位置引数のパック/アンパック
        10.3.6 ** によるキーワード引数のパック/アンパック
        10.3.7 キーワード専用引数(*)と位置専用引数(/)
        10.3.8 ミュータブル引数とイミュータブル引数
    10.4 docstring(ドキュメント文字列)
    10.5 第一級オブジェクトとしての関数
    10.6 関数呼び出しの引数はタプルではない
    10.7 内部関数
        10.7.1 クロージャ
    10.8 無名関数(ラムダ関数)
    10.9 ジェネレータ
        10.9.1 ジェネレータ関数
        10.9.2 ジェネレータ内包表記
    10.10 デコレータ
    10.11 名前空間とスコープ
    10.12 ダンダー名
    10.13 再帰
    10.14 非同期関数についての簡単な前置き
    10.15 例外
        10.15.1 try とexcept によるエラー処理
        10.15.2 finally 節の使い方
        10.15.3 独自例外の作成
    10.16 復習と予習
    10.17 演習問題

11章 オブジェクト
    11.1 オブジェクトとは何か
    11.2 単純オブジェクト
        11.2.1 class によるクラスの定義
        11.2.2 属性の付与
        11.2.3 メソッド
        11.2.4 初期化
    11.3 継承
        11.3.1 基底クラスからの継承
        11.3.2 メソッドのオーバーライド
        11.3.3 メソッドの追加
        11.3.4 super() を使った親クラスのメソッド呼び出し
        11.3.5 多重継承の使い方
        11.3.6 ミックスインのインクルード
    11.4 self の反論
    11.5 属性へのアクセス
        11.5.1 直接アクセス
        11.5.2 ゲッターとセッター
        11.5.3 属性アクセスのためのプロパティ
        11.5.4 計算された値のためのプロパティ
        11.5.5 属性を隠すための名前のマングリング
        11.5.6 クラス属性とインスタンス属性
    11.6 メソッドのタイプ
        11.6.1 インスタンスメソッド
        11.6.2 クラスメソッド
        11.6.3 静的メソッド
    11.7 ダックタイピング
    11.8 特殊メソッド
    11.9 集約と合成
    11.10 オブジェクトとその他のものの使い分け
    11.11 名前付きタプル
    11.12 データクラス
    11.13 attrs パッケージ
    11.14 復習と予習
    11.15 演習問題

12章 モジュールとパッケージ
    12.1 モジュールとimport 文
        12.1.1 モジュールのインポート
        12.1.2 別名によるモジュールのインポート
        12.1.3 必要なものだけをインポートする方法
    12.2 パッケージ
        12.2.1 モジュール検索パス
        12.2.2 相対インポートと絶対インポート
        12.2.3 モジュールかオブジェクトか
    12.3 標準ライブラリ
        12.3.1 setdefault() とdefaultdict() による存在しないキーの処理
        12.3.2 Counter() による要素数の計算
        12.3.3 スタック+ キュー==デック
        12.3.4 itertools によるコード構造の反復処理
        12.3.5 乱数
    12.4 外部電池の利用:サードパーティライブラリを使う
    12.5 復習と予習
    12.6 演習問題

第II部 ツール

13章 開発環境
    13.1 Python コードの見つけ方
    13.2 パッケージのインストール
        13.2.1 pip によるインストール
        13.2.2 OS ネイティブのパッケージマネージャーによるインストール
        13.2.3 ソースからのインストール
    13.3 仮想環境
        13.3.1 virtualenv とvenv による仮想環境の構築
        13.3.2 Pipenv によるパッケージ管理
        13.3.3 Poetry によるパッケージ管理
        13.3.4 Conda によるパッケージ管理
        13.3.5 uv によるパッケージ管理
    13.4 IDE(統合開発環境)
        13.4.1 IPython による対話型開発
        13.4.2 Jupyter Notebook によるノートブック開発
        13.4.3 JupyterLab による統合開発環境
    13.5 バージョン管理
        13.5.1 Mercurial によるバージョン管理
        13.5.2 Git によるバージョン管理
    13.6 復習と予習
    13.7 演習問題

14章 型ヒントとドキュメント
    14.1 型ヒント
        14.1.1 変数の型ヒント
        14.1.2 関数の型ヒント
    14.2 mypy
    14.3 ドキュメント
        14.3.1 コメント
        14.3.2 docstring(ドキュメント文字列)
        14.3.3 テキストファイルのマークアップ
    14.4 復習と予習
    14.5 演習問題

15章 テスト
    15.1 Pylint
    15.2 Ruff 
    15.3 unittest 
    15.4 doctest 
    15.5 pytest
        15.5.1 具体例
        15.5.2 フィクスチャ
        15.5.3 パラメータ化
    15.6 Hypothesis 
    15.7 Nox
    15.8 継続的インテグレーション
    15.9 復習と予習
    15.10 演習問題

16章 デバッグ
    16.1 アサーション
    16.2 表示
    16.3 フォーマット済み文字列
    16.4 pprint() 
    16.5 IceCream
    16.6 デコレータ
    16.7 ロギング
    16.8 pdb
    16.9 breakpoint() 
    16.10 復習と予習
    16.11 演習問題

第III部 応用

17章 テキストデータ
    17.1 Unicode
        17.1.1 Unicode 文字列
        17.1.2 UTF-8 
        17.1.3 エンコード
        17.1.4 デコード
        17.1.5 HTML エンティティ
        17.1.6 正規化
    17.2 正規表現
        17.2.1 match() による文字列の先頭の正確なマッチ
        17.2.2 search() による最初のマッチの検索
        17.2.3 findall() によるすべてのマッチの検索
        17.2.4 split() によるマッチ部分での分割
        17.2.5 sub() によるマッチした部分の置換
    17.3 パターン
        17.3.1 特殊文字の使い方
        17.3.2 パターンの記述
        17.3.3 マッチした部分の抽出方法
    17.4 復習と予習
    17.5 演習問題

18章 バイナリデータ
    18.1 struct によるバイナリデータの変換
    18.2 サードパーティのバイナリデータツールを使ったデータの抽出
    18.3 binascii によるバイト/文字列の変換
    18.4 ビット演算子
    18.5 復習と予習
    18.6 演習問題

19章 日時データ
    19.1 うるう年
    19.2 datetime モジュール
    19.3 time モジュール
    19.4 日時の読み書き
    19.5 変換のすべて
    19.6 代替モジュール
    19.7 復習と予習
    19.8 演習問題

20章 ファイル
    20.1 ファイル入出力
        20.1.1 open() による作成とオープン
        20.1.2 print() によるテキストファイルへの書き込み
        20.1.3 write() によるテキストファイルへの書き込み
        20.1.4 read()、readline()、readlines() によるテキストファイルの読み出し
        20.1.5 write() によるバイナリファイルの書き込み
        20.1.6 read() によるバイナリファイルの読み出し
        20.1.7 with によるファイルの自動的なクローズ
        20.1.8 seek() による位置の変更
    20.2 メモリマップ
    20.3 ファイル操作
        20.3.1 exists() によるファイルの有無のチェック
        20.3.2 isfile() によるファイルタイプのチェック
        20.3.3 copy() によるコピー
        20.3.4 rename() によるファイル名の変更
        20.3.5 link() とsymlink() によるリンクの作成
        20.3.6 chmod() によるパーミッションの変更
        20.3.7 chown() による所有権の変更
        20.3.8 remove() によるファイルの削除
    20.4 ディレクトリ操作
        20.4.1 mkdir() による作成
        20.4.2 rmdir() による削除
        20.4.3 listdir() によるディレクトリ一覧の作成
        20.4.4 chdir() によるカレントディレクトリの変更
        20.4.5 glob() によるパターンにマッチするファイル名の一覧の作成
    20.5 パス名
        20.5.1 abspath() によるパス名の取得
        20.5.2 realpath() によるシンボリックリンクパス名の取得
        20.5.3 os.path.join() によるパス名の連結
        20.5.4 pathlib の使い方
    20.6 BytesIO とStringIO 
        20.6.1 ファイル形式の判別
    20.7 復習と予習
    20.8 演習問題

21章 並行処理
    21.1 プログラムとプロセス
        21.1.1 subprocess によるプロセスの作成
        21.1.2 multiprocessing によるプロセスの作成
        21.1.3 terminate() によるプロセスの強制終了
        21.1.4 os によるシステム情報の入手
        21.1.5 psutil によるプロセス情報の取得
    21.2 コマンドの自動実行
        21.2.1 Invoke によるタスク管理
        21.2.2 その他のコマンド実行ヘルパー
    21.3 並行処理
        21.3.1 キュー
        21.3.2 マルチプロセス
        21.3.3 マルチスレッド
        21.3.4 GIL(グローバルインタプリタロック)
        21.3.5 concurrent.futures モジュール
        21.3.6 グリーンスレッドとgevent
        21.3.7 Twisted フレームワーク
        21.3.8 asyncio 
    21.4 コルーチンとイベントループ
    21.5 asyncio の代替パッケージ
    21.6 非同期とその他の並行処理
    21.7 非同期フレームワークとサーバ
        21.7.1 Redis によるキュー
        21.7.2 キューを越えて
    21.8 復習と予習
    21.9 演習問題

22章 ネットワーク
    22.1 TCP/IP 
        22.1.1 ソケット
        22.1.2 Scapy 
        22.1.3 Netcat 
    22.2 ネットワークのパターン
    22.3 リクエスト/レスポンスパターン
        22.3.1 リクエスト/レスポンス:ZeroMQ 
        22.3.2 リクエスト/レスポンス:その他のメッセージングツール
    22.4 パブリッシュ/サブスクライブパターン
        22.4.1 パブサブ:Redis 
        22.4.2 パブサブ:ZeroMQ
        22.4.3 パブサブ:その他のツール
    22.5 インターネットサービス
        22.5.1 DNS 
        22.5.2 標準ライブラリにおけるメールモジュール
        22.5.3 その他のプロトコル
    22.6 Web サービスとAPI 
    22.7 データのシリアライズ
        22.7.1 pickle
        22.7.2 その他のシリアライズ形式
    22.8 RPC 
        22.8.1 XML-RPC 
        22.8.2 JSON-RPC 
        22.8.3 gRPC 
    22.9 リモート管理
    22.10 大規模データ
        22.10.1 Hadoop 
        22.10.2 Spark 
        22.10.3 Dask 
    22.11 クラウド
        22.11.1 AWS
        22.11.2 Google Cloud
        22.11.3 Microsoft Azure 
        22.11.4 OpenStack
    22.12 Docker 
    22.13 Kubernetes 
    22.14 復習と予習
    22.15 演習問題

23章 永続ストレージ
    23.1 テキストファイル
    23.2 表形式でフィールドが区切られたテキストファイル
        23.2.1 CSV 
        23.2.2 XML 
        23.2.3 XML のセキュリティについて一言
        23.2.4 HTML
        23.2.5 JSON 
        23.2.6 YAML 
        23.2.7 TOML
        23.2.8 Tablib
        23.2.9 設定ファイル
    23.3 バイナリファイル
        23.3.1 パディングされたバイナリファイルとメモリマッピング
        23.3.2 スプレッドシート
        23.3.3 HDF5 
        23.3.4 TileDB 
    23.4 リレーショナルデータベース
        23.4.1 SQL 
        23.4.2 DB-API 
        23.4.3 SQLite
        23.4.4 DuckDB
        23.4.5 MySQL
        23.4.6 PostgreSQL
        23.4.7 SQLAlchemy
        23.4.8 その他のデータベースアクセスパッケージ
    23.5 NoSQL データストア
        23.5.1 dbm ファミリ
        23.5.2 Memcached 
        23.5.3 Redis 
        23.5.4 Redis の代替システム:Valkey 
        23.5.5 ドキュメントデータベース
        23.5.6 時系列データベース
        23.5.7 グラフデータベース
        23.5.8 その他のNoSQL データベース
    23.6 全文データベース
    23.7 ベクトルデータベース
    23.8 地理空間データベース
    23.9 復習と予習
    23.10 演習問題

24章 Web 
    24.1 Web の基礎
    24.2 HTTP のテスト
        24.2.1 Telnet
        24.2.2 curl 
        24.2.3 HTTPie 
        24.2.4 httpbin 
    24.3 Web クライアント
        24.3.1 標準ライブラリ
        24.3.2 Requests モジュール
    24.4 その他のWeb クライアント
    24.5 Web サーバ
        24.5.1 Python による最も単純なWeb サーバ
        24.5.2 WSGI
        24.5.3 ASGI
        24.5.4 Apache 
        24.5.5 nginx 
        24.5.6 その他のPython ベースWSGI サーバ
    24.6 Web サーバフレームワーク
        24.6.1 Bottle 
        24.6.2 Flask 
        24.6.3 Django
        24.6.4 FastAPI
        24.6.5 Litestar
    24.7 データベースフレームワーク
    24.8 Web サービスと自動化
        24.8.1 webbrowser 
        24.8.2 webview 
    24.9 Web API とREST 
    24.10 websockets
    24.11 webhooks
    24.12 Web フロントエンド
        24.12.1 htmx
        24.12.2 FastHTML 
    24.13 クロールとスクレイピング
        24.13.1 Scrapy
        24.13.2 Beautiful Soup
        24.13.3 Requests-HTML 
    24.14 映画情報のスクレイピング
    24.15 復習と予習
    24.16 演習問題

25章 データサイエンス
    25.1 標準Python 
        25.1.1 データ形式の変換
        25.1.2 math ライブラリ
        25.1.3 複素数
        25.1.4 decimal による正確な浮動小数点数計算
        25.1.5 fractions による有理数計算
        25.1.6 array によるパックされたシーケンス
        25.1.7 統計
        25.1.8 行列の乗算
    25.2 NumPy 
        25.2.1 array() による配列の作成
        25.2.2 arange() による配列の作成
        25.2.3 zeros()、ones()、random() による配列の作成
        25.2.4 reshape() による配列の形状の変更
        25.2.5 [] による要素の取得
        25.2.6 配列の演算
        25.2.7 線形代数
    25.3 SciPy 
    25.4 pandas 
    25.5 Polars 
    25.6 DuckDB 
    25.7 データビジュアライゼーション
    25.8 復習と予習
    25.9 演習問題

26章 AI
    26.1 AI の実際
        26.1.1 エキスパートシステム
        26.1.2 パーセプトロン
        26.1.3 ブレークスルー
        26.1.4 画像認識:ImageNet とAlexNet 
        26.1.5 大規模言語モデル
        26.1.6 ChatGPT の台頭
        26.1.7 検索拡張生成(RAG)
        26.1.8 エージェント
        26.1.9 効率性
    26.2 モデルの作成:Python のフレームワーク
    26.3 現在のモデル
    26.4 百万種のモデル:Hugging Face
    26.5 Ollama で実際に試す
        26.5.1 Ollama のインストール
        26.5.2 モデルの選択
        26.5.3 ほかのモデルの選択
        26.5.4 Ollama の参考文献
    26.6 その他の参考文献
    26.7 復習と予習
    26.8 演習問題

27章 パフォーマンス
    27.1 コンピュータのハードウェア
    27.2 実行時間の計測
    27.3 プロファイリング
    27.4 アルゴリズムとデータ構造
    27.5 配列とリスト、タプルの比較
    27.6 キャッシュ
    27.7 Cython
    27.8 NumPy とSciPy 
    27.9 C またはRust で書かれた拡張
    27.10 Taichi
    27.11 PyPy 
    27.12 Numba 
    27.13 標準Python のJIT 
    27.14 Mojo 
        27.14.1 設計の背景
        27.14.2 設計
        27.14.3 コード例
        27.14.4 弱点
        27.14.5 まとめ
    27.15 復習と予習
    27.16 演習問題
	
付録A 演習問題の解答
    A.1 2章 データ型と変数
    A.2 3章 数値
    A.3 4章 文字列
    A.4 5章 バイト列
    A.5 6章 if とmatch 
    A.6 7章 for とwhile
    A.7 8章 タプルとリスト
    A.8 9章 辞書と集合
    A.9 10章 関数
    A.10 11章 オブジェクト
    A.11 12章 モジュールとパッケージ
    A.12 13章 開発環境
    A.13 14章 型ヒントとドキュメント
    A.14 15章 テスト
    A.15 16章 デバッグ
    A.16 17章 テキストデータ
    A.17 18章 バイナリデータ
    A.18 19章 日時データ
    A.19 20章 ファイル
    A.20 21章 並行処理
    A.21 22章 ネットワーク
    A.22 23章 永続ストレージ
    A.23 24章 Web
    A.24 25章 データサイエンス
    A.25 26章 AI
    A.26 27章 パフォーマンス

索引