データサイエンス、Web開発、セキュリティなど幅広い分野で人気が高まるPython。本書はベストセラー入門書『入門 Python 3』の、5年ぶりの改訂版です。Pythonプログラミングの基礎から、Web、データベース、ネットワーク、並行処理といった応用まで、実務を見据えた内容を明快かつ丁寧に解説します。Pythonの機能を一通り網羅しており、リファレンスとしても有用です。生成AI全盛の今こそ、必要な基本を学べる一冊です。Python 3.14対応。
入門 Python 3 第3版
Bill Lubanovic 著、鈴木 駿 監訳、長尾 高弘 訳
- TOPICS
- Programming , Python
- 発行年月日
- 2026年06月16日
- PRINT LENGTH
- 804
- ISBN
- 978-4-8144-0164-2
- 原書
- Introducing Python, 3rd edition
- FORMAT
目次
『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章 パフォーマンス
索引