書籍詳細(独習Python)

独習Python 書影

ISBN: 978-4-7981-6364-2

独習Python

サポート終了
著者山田祥寛
出版社翔泳社
価格3,000円(税別)
判型B5変判・1色
ページ数568ページ
発売日2020年6月22日
シリーズ 独習
対象レベル初中級

改訂版が刊行されています。詳細はこちらをご覧ください。

手を動かしておぼえるPythonプログラミング

Pythonの基本的な言語仕様から、標準ライブラリ、ユーザー定義関数、オブジェクト指向構文、モジュールまで、サンプルプログラムを例示しながら詳細かつ丁寧に解説します。解説→例題(サンプル)→理解度チェックという3つのステップで学習を進めます。
書籍掲載サンプルは、サポートページからダウンロード可能。
独習Python ロゴ

更新履歴

  • FAQ情報:2021年11月9日 更新
  • 正誤訂正:2025年5月4日 更新

目次

  • 第1章 イントロダクション
  • 1.1 Pythonとは?
  • 1.1.1 マシン語と高級言語
  • 1.1.2 コンパイル言語とインタプリター言語
  • 1.1.3 スクリプト言語
  • 1.1.4 オブジェクト指向言語
  • 1.1.5 Pythonのライブラリ
  • 1.2 Pythonの歴史と現状
  • 1.2.1 Pythonの歴史
  • 1.2.2 Python開発の状況
  • 1.3 Pythonアプリを開発/実行するための基本環境
  • 1.3.1 準備すべきソフトウェア
  • 1.3.2 Windows環境の場合
  • 1.3.3 macOS環境の場合
  • 1.3.4 サンプルの配置
  • 1.4 Pythonプログラミングの基本
  • 1.4.1 コードの実行方法
  • 1.4.2 Pythonシェルによる実行
  • 1.4.3 ファイルからコードを実行する
  • 1.5 Pythonの基本ルール
  • 1.5.1 文字コードの設定
  • 1.5.2 文を区切るのは改行
  • 1.5.3 指定された値を表示する「print」
  • 1.5.4 大文字/小文字を区別する
  • 1.5.5 コメントは開発者のための備忘録
  • 1.6 開発/学習の前に押さえておきたいテーマ
  • 1.6.1 デバッグの基本
  • 1.6.2 ブラウザー上で実行できるPython開発環境「Jupyter Notebook」
  • この章の理解度チェック
  • 第2章 Pythonの基本
  • 2.1 変数
  • 2.1.1 変数の宣言
  • 2.1.2 識別子の命名規則
  • 2.1.3 よりよい識別子のためのルール
  • 2.1.4 変数の破棄
  • 2.1.5 定数
  • 2.2 データ型
  • 2.2.1 データ型の分類
  • 2.2.2 論理型(bool)
  • 2.2.3 整数型(int)
  • 2.2.4 浮動小数点型(float)
  • 2.2.5 【補足】数値セパレーター
  • 2.2.6 複素数型(complex)
  • 2.2.7 文字列型(str)
  • 2.2.8 リスト(list)
  • この章の理解度チェック
  • 第3章 演算子
  • 3.1 算術演算子
  • 3.1.1 データ型によって挙動は変化する
  • 3.1.2 文字列と数値との演算
  • 3.1.3 除算を表す演算子「/」「//」
  • 3.1.4 浮動小数点数の演算には要注意
  • 3.2 代入演算子
  • 3.2.1 数値のインクリメント/デクリメント
  • 3.2.2 「=」演算子による代入は参照の引き渡し
  • 3.2.3 ミュータブルとイミュータブル
  • 3.2.4 アンパック代入
  • 3.2.5 新しい代入演算子「:=」【Python 3.8】
  • 3.3 比較演算子
  • 3.3.1 異なる型での比較
  • 3.3.2 リストの比較
  • 3.3.3 浮動小数点数の比較
  • 3.3.4 同一性と同値性
  • 3.3.5 条件演算子
  • 3.4 論理演算子
  • 3.4.1 ショートカット演算(短絡演算)
  • 3.4.2 比較演算子の連結
  • 3.5 ビット演算子
  • 3.5.1 ビット論理演算子
  • 3.5.2 ビットシフト演算子
  • 3.6 演算子の優先順位と結合則
  • 3.6.1 優先順位
  • 3.6.2 結合則
  • この章の理解度チェック
  • 第4章 制御構文
  • 4.1 条件分岐
  • 4.1.1 if命令――単純分岐
  • 4.1.2 if命令――多岐分岐
  • 4.1.3 if命令――入れ子構造
  • 4.1.4 【補足】条件式を指定する場合の注意点
  • 4.2 繰り返し処理
  • 4.2.1 条件式がTrueの間だけ処理を繰り返す――while命令
  • 4.2.2 【補足】無限ループ
  • 4.2.3 リストの内容を順に処理する――for命令
  • 4.2.4 決められた回数だけ処理を実行する――for命令(range関数)
  • 4.2.5 リストから新たなリストを生成する――リスト内包表記
  • 4.3 ループの制御
  • 4.3.1 ループを中断する――break命令
  • 4.3.2 現在の周回をスキップする――continue命令
  • 4.3.3 ループでの終了処理を実装する
  • 4.3.4 入れ子のループを中断/スキップする
  • 4.4 例外処理
  • 4.4.1 例外を処理する――try命令
  • 4.4.2 例外が発生した場合、しなかった場合の処理を定義する
  • この章の理解度チェック
  • 第5章 標準ライブラリ【基本】
  • 5.1 ライブラリの分類
  • 5.1.1 関数
  • 5.1.2 型
  • 5.1.3 組み込み型/関数とモジュール
  • 5.2 文字列の操作
  • 5.2.1 文字列の長さを取得する
  • 5.2.2 文字列を大文字⇔小文字で変換する
  • 5.2.3 部分文字列を取得する
  • 5.2.4 文字の種類を判定する
  • 5.2.5 文字列を検索する
  • 5.2.6 文字列の前後から空白を除去する
  • 5.2.7 文字列に特定の文字列が含まれるかを判定する
  • 5.2.8 文字列を特定の区切り文字で分割する
  • 5.2.9 リストを結合する
  • 5.2.10 文字列を置き換える
  • 5.2.11 文字を整形する
  • 5.2.12 str型⇔bytes型を変換する
  • 5.3 日付/時刻の操作
  • 5.3.1 日付/時刻値を生成する
  • 5.3.2 年月日、時分秒などの時刻要素を取得する
  • 5.3.3 日付/時刻を加算/減算する
  • 5.3.4 日付/時刻値の差分を求める
  • 5.3.5 日付/時刻値を比較する
  • 5.3.6 日付/時刻値を整形する
  • 5.3.7 カレンダーを生成する
  • この章の理解度チェック
  • 第6章 標準ライブラリ【コレクション】
  • 6.1 シーケンス型
  • 6.1.1 リストの生成
  • 6.1.2 リストから特定範囲の要素を取得する――スライス構文
  • 6.1.3 リストの要素数を取得する
  • 6.1.4 リストに要素を追加/削除する
  • 6.1.5 リスト内の要素を削除する
  • 6.1.6 複数要素を追加/置換/削除する
  • 6.1.7 リストを検索する
  • 6.1.8 リストを複製する
  • 6.1.9 リストを連結する
  • 6.1.10 リストの内容を並べ替える
  • 6.1.11 リストをforループで処理する方法
  • 6.1.12 リスト内の要素がTrueであるかを判定する
  • 6.1.13 リスト内の要素を加工する
  • 6.1.14 リストの内容を特定の条件で絞り込む
  • 6.1.15 リスト内の要素を順に処理して1つにまとめる
  • 6.1.16 キュー構造を実装する
  • 6.1.17 イミュータブルなリストを生成する
  • 6.2 セット(集合)型
  • 6.2.1 セットの生成
  • 6.2.2 セットの基本操作
  • 6.2.3 要素の有無/包含関係を判定する
  • 6.2.4 和集合/差集合/積集合などを求める
  • 6.2.5 セット内包表記
  • 6.3 辞書(dict)型
  • 6.3.1 辞書の生成
  • 6.3.2 ハッシュ表とキーの注意点
  • 6.3.3 辞書の基本操作
  • 6.3.4 既定値を持つ辞書を定義する――defaultdict
  • 6.3.5 辞書内包表記
  • この章の理解度チェック
  • 第7章 標準ライブラリ【その他】
  • 7.1 正規表現
  • 7.1.1 正規表現の基本
  • 7.1.2 文字列が正規表現パターンにマッチしたかを判定する
  • 7.1.3 マッチしたすべての文字列を取得する
  • 7.1.4 正規表現オプションでマッチング時の挙動を制御する
  • 7.1.5 【例】正規表現による検索
  • 7.1.6 正規表現で文字列を置換する
  • 7.1.7 正規表現で文字列を分割する
  • 7.2 ファイル操作
  • 7.2.1 【例】テキストファイルへの書き込み
  • 7.2.2 テキストファイルを読み込む
  • 7.2.3 バイナリファイルの読み書き
  • 7.2.4 タブ区切り形式のテキストを読み書きする
  • 7.2.5 オブジェクトのシリアライズ
  • 7.3 ファイルシステムの操作
  • 7.3.1 フォルダー配下のファイル情報を取得する(1)
  • 7.3.2 フォルダー配下のファイル情報を取得する(2)
  • 7.3.3 フォルダー/ファイル情報を再帰的に取得する
  • 7.3.4 フォルダーを作成/リネーム/削除する
  • 7.3.5 フォルダーを作成/リネーム/削除する(複数階層)
  • 7.3.6 フォルダー/ファイルをコピーする
  • 7.4 HTTP経由でコンテンツを取得する
  • 7.4.1 requestsモジュールの基本
  • 7.4.2 HTTP POSTによる通信
  • 7.4.3 【例】JSONデータを取得する
  • 7.5 その他の機能
  • 7.5.1 数学演算――mathモジュール+組み込み関数
  • 7.5.2 乱数を生成する――randomモジュール
  • 7.5.3 データ型を変換/判定する――int/float関数など
  • 7.5.4 モジュール/クラスに含まれる要素を確認する
  • この章の理解度チェック
  • 第8章 ユーザー定義関数
  • 8.1 ユーザー定義関数の基本
  • 8.1.1 ユーザー定義関数の基本構文
  • 8.1.2 関数名
  • 8.1.3 仮引数と実引数
  • 8.1.4 戻り値
  • 8.2 変数の有効範囲(スコープ)
  • 8.2.1 グローバル変数とローカル変数
  • 8.2.2 関数内でグローバル変数を利用する――global/nonlocal
  • 8.2.3 【補足】ブロックレベルのスコープ
  • 8.3 引数のさまざまな記法
  • 8.3.1 引数の既定値
  • 8.3.2 キーワード引数
  • 8.3.3 可変長引数の関数
  • 8.3.4 可変長引数(キーワード引数)
  • 8.3.5 「*」「**」による引数の展開
  • 8.4 関数呼び出しと戻り値
  • 8.4.1 複数の戻り値
  • 8.4.2 再帰関数
  • 8.4.3 高階関数
  • 8.4.4 無名関数(ラムダ式)
  • この章の理解度チェック
  • 第9章 ユーザー定義関数【応用】
  • 9.1 デコレーター
  • 9.1.1 デコレーターを利用しない例
  • 9.1.2 デコレーターの基本
  • 9.1.3 【例】関数の結果をキャッシュする
  • 9.1.4 引数を受け取るデコレーター
  • 9.1.5 クロージャー(関数閉方)
  • 9.2 ジェネレーター
  • 9.2.1 yield命令
  • 9.2.2 【例】素数を求めるジェネレーター
  • 9.2.3 ジェネレーターの主なメソッド
  • 9.2.4 一部の処理を他のジェネレーターに委譲する
  • 9.2.5 ジェネレーター式
  • 9.3 関数のモジュール化
  • 9.3.1 モジュールの定義
  • 9.3.2 モジュールをインポートする
  • 9.3.3 モジュールの検索先
  • 9.3.4 【補足】インポート時の作法
  • 9.3.5 パッケージ
  • 9.4 非同期処理
  • 9.4.1 コルーチンの基本
  • 9.4.2 非awaitableな処理をawait式に渡す
  • 9.4.3 タスクの作成と実行
  • 9.5 ドキュメンテーション
  • 9.5.1 docstringの基本
  • 9.5.2 ドキュメント生成ツール「Sphinx」
  • 9.5.3 【注意】デコレーターにおけるdocstring
  • 9.5.4 関数アノテーション
  • この章の理解度チェック
  • 第10章 オブジェクト指向構文
  • 10.1 クラスの定義
  • 10.1.1 最も簡単なクラス
  • 10.1.2 インスタンス変数
  • 10.1.3 メソッド
  • 10.1.4 クラスメソッド
  • 10.1.5 staticメソッド
  • 10.1.6 クラス変数
  • 10.2 カプセル化
  • 10.2.1 カプセル化とは?
  • 10.2.2 インスタンス変数の隠蔽
  • 10.2.3 アクセサーメソッド
  • 10.2.4 プロパティ
  • 10.3 継承
  • 10.3.1 継承の基本
  • 10.3.2 メソッドのオーバーライド
  • 10.3.3 superによる基底クラスの参照
  • 10.3.4 多重継承とメソッドの検索順序
  • 10.3.5 委譲
  • 10.3.6 ミックスイン
  • 10.4 ポリモーフィズム
  • 10.4.1 ポリモーフィズムの基本
  • 10.4.2 抽象メソッド
  • 10.4.3 isinstance関数
  • この章の理解度チェック
  • 第11章 オブジェクト指向構文【応用】
  • 11.1 例外処理
  • 11.1.1 例外クラスの型
  • 11.1.2 終了処理を定義する――finally節
  • 11.1.3 例外をスローする――raise命令
  • 11.1.4 独自の例外クラス
  • 11.2 特殊メソッド
  • 11.2.1 オブジェクトの文字列表現を取得する
  • 11.2.2 オブジェクト同士が等しいかどうかを判定する
  • 11.2.3 オブジェクトのハッシュ値を取得する
  • 11.2.4 オブジェクトを四則演算する
  • 11.2.5 オブジェクト同士を比較する
  • 11.2.6 データ型を変換する
  • 11.2.7 オブジェクトの真偽を判定する
  • 11.2.8 アトリビュートの取得/設定の挙動をカスタマイズする
  • 11.2.9 ディスクリプター
  • 11.2.10 インスタンスを関数的に呼び出す
  • 11.3 データクラス
  • 11.3.1 データクラスの基本
  • 11.3.2 フィールドのカスタマイズ
  • 11.3.3 イミュータブルなクラス
  • 11.3.4 hashableなクラスを生成する
  • 11.3.5 データクラスの予約関数
  • 11.4 イテレーター
  • 11.4.1 自作クラスでイテレーターを実装する
  • 11.4.2 【例】素数を求めるイテレーター
  • 11.4.3 コンテナー型で利用できる特殊メソッド
  • 11.5 メタクラス
  • 11.5.1 type関数とclass命令
  • 11.5.2 メタクラスの基本
  • 11.5.3 【例】シングルトンパターン
  • 11.5.4 クラスデコレーター
  • この章の理解度チェック
  • 付録A「練習問題」「この章の理解度チェック」解答
  • コラム
  • Pythonをより深く学ぶための参考書籍/サイト
  • きれいなプログラム、書いていますか?――コーディング規約
  • Pythonプログラマーの心構え――The Zen of Python
  • 複数のPythonが同居する場合の実行方法
  • 外部ライブラリのインストール
  • モジュール/クラス/関数の特殊属性
  • よく見かけるエラーとその対処法

正誤表

該当頁 該当箇所 修正刷
訂正箇所 訂正事項 更新日
p.29 [4]Pythonシェルを終了する 本文1行目 7刷
[Ctrl]+[Z]キーを押すだけです(macOSでは[control]+[Z]キー)。 exit()コマンドを実行してください。 2022/11/10
p.64 下から2行目 7刷
「1.414210」「1.173205e-7」はそれぞれ「1.414210」「1.173205E-7」でも同じ意味です。 「1.4142e10」「1.173205e-7」はそれぞれ「1.4142E10」「1.173205E-7」でも同じ意味です。 2022/11/01
p.68 表2.5「エスケープシーケンス」下から4項目目 7刷
\oXX \XX 2022/11/01
p.78 [3]の3つ目の問題 -
識別子には、英数字とアルファベットだけを利用できる 識別子には、英数字とアンダースコアだけを利用できる 2025/02/24
p.85 表3.2 主な代入演算子 |= 演算子の例の結果 2刷
→8 10 2020/07/30
p.85 表3.2 主な代入演算子 下から1~2行目 3刷
>>=  左辺を右辺の値だけ左シフトした結果を左辺に代入
<<=  左辺を右辺の値だけ右シフトした結果を左辺に代入
>>=  左辺を右辺の値だけシフトした結果を左辺に代入
<<=  左辺を右辺の値だけシフトした結果を左辺に代入
2020/09/22
p.101 表3.4 not演算子の例 3刷
! not x not x
!は不要)
2020/11/09
p.169 [構文]startswithメソッド 6刷
xs.startswith(prefix [, start[, end]]) s.startswith(prefix [, start[, end]]) 2021/09/22
p.175 図5.9 左上の文字列 4刷
'{}は{}、{}歳です。 '{}は{}、{}歳です。' 2021/02/22
p.184 [構文]datetime/date/timeコンストラクター 2刷
microsecond:ミリ秒 microsecond:マイクロ 2020/07/07
p.185 [構文]strptimeメソッド 引数formatの解説 6刷
p.177・178:表5.6を参照 p.192 表5.12を参照 2021/09/06
p.187 [構文 ]replaceメソッド 2刷
microsecond:ミリ秒 microsecond:マイクロ 2020/07/11
p.188 表5.10 日付/時刻要素を取得するための属性 microsecond属性の概要 2刷
ミリ秒 マイクロ 2020/07/11
p.224 表6.2 pow(a, b) の「例」 8刷
mod(3, 2) pow(3, 2) 2024/03/01
p.258 表7.3 4行目の設定値 8刷
VERVOSE VERBOSE 2024/03/01
p.261 表7.4 4行目 8刷
VERVOSE VERBOSE 2024/03/01
p.279 本文下から4行目 3刷
6バイトをスキップした結果、2文字目 6バイトをスキップした結果、3文字目 2020/10/19
p.291 図7.8 8刷
b001.dat b001.txt 2024/03/01
p.311 [コラム]参考書籍 3冊目 2刷
エキスパートPythonプログラミング 改訂2版(アスキードワンゴ) ISBN:9784048930611 Pythonプロフェッショナルプログラミング第3版(秀和システム)ISBN:9784798053820 2020/06/14
p.338 (4)可変長引数で「1個以上の引数」を表す方法 1行目 8刷
total_product関数 total_products関数 2024/03/01
p.340 本文 2行目 8刷
(キーワード引数は位置引数の後方に記述できないからです) 位置引数はキーワード引数の後方に記述できないからです) 2023/07/26
p.363 下から7行目 6刷
よって、リスト9.6の①は、 よって、リスト9.6のは、 2021/09/06
p.386 練習問題 9.2[1] ① 8刷
abs fabs 2024/03/01
p.430 練習問題 10.1 2行目 8刷
print(f'私のペットは{self.kind}の{self.name}ちゃんです! ') print(f'ペットの{self.kind}の名前は、{self.name}ちゃんです!') 2024/03/01
p.435 リスト 10.19 access_method.py 3-4行目 3刷
def __init__(self, name, age):
 self.set__name = name
 self.__age__ = age
def __init__(self, name, age):
 self.__name = name
 self.__age = age
2020/09/18
p.497 リスト11.22 下の本文 4行目 -
「self._ _data = {}」としていないのは、_ _setattr_ _ メソッド(②)が呼び出されてしまうからです。 「self._ _data = {}」としていないのは、_ _setattr_ _ メソッド()が呼び出されてしまうからです。 2025/05/04
p.537 練習問題 9.2[1] ① 8刷
from math import abs, ceil, floor from math import fabs, ceil, floor 2024/03/01
p.542 索引 4刷
/(バックスラッッシュ) \(バックスラッッシュ) 2021/03/01

FAQ

Python関連の拡張機能をすべてアンインストールして、Python拡張機能をインストールし直してみてください。
それでも、動作しない場合は、[ファイル]-[設定]-[ユーザー設定]-[拡張機能]-[Python]から[Language Server]の設定を変更してみてください。

更新日: 2021.11.09

PCの環境変数PathにAnaconda\Library\binを加えて実行してみてください。

更新日: 2021.06.27

お問い合わせ

書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。

Powered by メールフォーム 『オレンジフォーム』