■■■第1章 コードは動けばなんでも同じ?
■■1-1 「動けばどんなコードでもいい」から卒業しよう
■1-1-1 コードの読みやすさとバグの関係
■1-1-2 良いコードが書けると最終的に「楽」になる
■■1-2 良いコードとはどんなコードなのか?
■1-2-1 可読性
■1-2-2 安全性
■1-2-3 保守性
■1-2-4 効率性
■1-2-5 良いコードの基準は複合的な関係
■■1-3 Pythonらしいコードを書こう
■1-3-1 コーディング規約
■1-3-2 標準で用意されてる機能を活用する
■1-3-3 グルー言語としてのPython
■■1-4 コードの書きかたにはトレンドがある
■1-4-1 手続き型プログラミング
■1-4-2 オブジェクト指向プログラミング
■1-4-3 関数型プログラミング
■1-4-4 Pythonとトレンド
■■1-5 モチベーションを保ちながらスキルアップする方法
■1-5-1 手を動かすことが大切
■1-5-2 成長に不安を感じたら
■■■第2章 まずはコードの見た目を整えよう
■■2-1 コードのお作法「PEP8」の要点をおさえる
■2-1-1 PEP8をすべて覚える必要はない!
■2-1-2 インデント
■2-1-3 空行
■2-1-4 スペース
■2-1-5 1行の長さ
■2-1-6 チームのルール
■■2-2 コードフォーマッターblackで自動整形してみよう
■2-2-1 コードフォーマッターのポイント
■2-2-2 コードフォーマッターblackをVSCodeに設定する
■2-2-3 コードフォーマッターblackをPyCharmに設定する
■■■第3章 読みやすいコードに改善するテクニック
■■3-1 コードは適切なサイズで分割しよう
■3-1-1 ブロックに分けると読みやすい
■3-1-2 関数に切り出す
■3-1-3 関数切り出しのコツ
■3-1-4 モジュールに切り出す
■■3-2 スッキリしたif文を書くコツ
■3-2-1 複数の比較演算子を使った条件式をまとめる
■3-2-2 条件式の左側は調査対象の変数で統一する
■3-2-3 辞書オブジェクトを使うとif文は不要になることがある
■3-2-4 複雑な条件は関数にする
■3-2-5 早期リターンを使う
■■3-3 ネストが深くなりすぎないようにしよう
■3-3-1 なぜネストが深くなってしまうのか
■3-3-2 深いネスト部分を関数で切り出す
■3-3-3 リスト内包表記や高階関数を使う
■3-3-4 データ構造を工夫する
■3-3-5 早期リターンでネストを浅くする
■■3-4 変数名・関数名・クラス名の命名にも注力する!
■3-4-1 PEP8の命名規則
■3-4-2 「名は体を表す」名前と実態を一致させる
■3-4-3 意味を持たない名前は極力避ける
■3-4-4 対になる対義語・反対語を使う
■3-4-5 ブール型はTrue/Falseがわかる名前にする
■■3-5 要所にわかりやすいコメントを残すには
■3-5-1 コメントの箇所と量には注意
■3-5-2 Docstringで説明文を書く
■3-5-3 Docstringの書きかたをマスターする
■■■第4章 Python便利機能でシンプルなコードを書く
■■4-1 for文で活躍する組み込み関数
■4-1-1 enumerate関数でインデックス番号を自動生成
■4-1-2 zip関数で複数リストを同時に処理
■4-1-3 rangeで連続した数値をかんたんに作る
■■4-2 よく使う標準ライブラリ
■4-2-1 osで環境変数の情報を取得
■4-2-2 datetimeで日時を操作
■4-2-3 pathlibでファイル・フォルダを操作
■4-2-4 jsonでJSON形式文字列を辞書オブジェクトに変換
■■4-3 スッキリしたコードが書けるPython便利機能
■4-3-1 リスト内包表記でリスト作成をシンプルにする
■4-3-2 三項演算子でif文を短縮
■4-3-3 f文字列でかんたんに変数を埋め込む
■■■第5章 プロが意識する安全性が高いコードとは?
■■5-1 変数のスコープを意識しよう
■5-1-1 スコープを理解していないことで起きるエラー
■5-1-2 for文の中で定義された値は外でも有効
■5-1-3 関数の中から関数の外の変数にアクセスができる
■■5-2 ミュータブル/イミュータブルの違いに要注意
■5-2-1 ミュータブル/イミュータブルとは?
■5-2-2 ミュータブルなオブジェクトのイコールによる代入は避ける
■5-2-3 ミュータブルなオブジェクトの引数に注意する
■5-2-4 ミュータブルなオブジェクトの引数にデフォルト値を設定するときの罠
■■5-3 「副作用」がないコードを書くために
■5-3-1 副作用とは?
■5-3-2 副作用がある関数はバグの温床
■■5-4 インプレースかどうかを意識しよう
■5-4-1 インプレースとは?
■5-4-2 違いを知らずにバグを仕込んでしまうことも
■5-4-3 それぞれのメリットと使い分け
■■5-5 型ヒントで可読性と安全性を高める
■5-5-1 型ヒントはバグを生みにくくする
■5-5-2 型ヒントの基本的な使いかた
■5-5-3 柔軟な型ヒント
■5-5-4 関数以外で使う便利なケース
■5-5-5 静的型チェッカーを併用する
■■5-6 安全性の要! 例外処理を書こう
■5-6-1 例外処理を書いて次のアクションを促す
■5-6-2 例外の送出で悪影響が広がる事態を防ぐ
■5-6-3 例外はエスカレーションできる
■5-6-4 例外処理を書くべき代表的な箇所
■■5-7 テストコード以外でも使えるassert文
■5-7-1 assert文の基本的な使いかた
■5-7-2 assert文を使うケース
■■5-8 ログを出力しよう
■5-8-1 なぜログを出力するのか?
■5-8-2 loggingライブラリを使う
■5-8-3 例外発生時にエラーメッセージをログに出力する
■5-8-4 ログの出力フォーマットを指定する
■5-8-5 ログの設定ファイルを作成する
■■■第6章 中級者への壁! クラスとオブジェクトに慣れる
■■6-1 クラスとはなにか? 概念を理解しよう
■6-1-1 Pythonはほとんどのものがオブジェクト
■6-1-2 クラスはオブジェクトを分類したもの
■6-1-3 処理もいっしょにまとめてみよう
■6-1-4 クラス設計の難しさ
■6-1-5 selfとはオブジェクト自身のこと
■■6-2 dataclassでデータ格納に特化したクラスを作る
■6-2-1 dataclassの基本とメリット
■6-2-2 インスタンス変数にデフォルト値を設定する
■6-2-3 「==」での比較は値の一致でTrueになる
■6-2-4 frozen=Trueで変更不可能なオブジェクトを作る
■6-2-5 asdictで辞書オブジェクトに変換する
■■6-3 オブジェクト指向を正しく理解する
■6-3-1 オブジェクトを使う=オブジェクト指向ではない
■6-3-2 カプセル化
■6-3-3 継承
■6-3-4 ポリモーフィズム
■■■第7章 バグがあるかも? テストコードを書こう!
■■7-1 テストコードとはなにか?
■7-1-1 アプリケーション開発におけるテストとは?
■7-1-2 テストコードを書くメリット
■■7-2 pytestを使ってテストコードを書いてみよう
■7-2-1 pytestの使いかた
■7-2-2 fixtureを使って事前処理・事後処理を追加
■7-2-3 自作関数をモックに置き換える
■7-2-4 外部ライブラリの関数をモックに置き換える
■7-2-5 例外発生を確認するためのテスト
■7-2-6 テストコードが書きやすいコードとは
■■■第8章 自力でエラーを解消するために
■■8-1 エラーを解消するためのヒント
■8-1-1 はじめの一歩! エラーメッセージを読もう
■8-1-2 デバッガーを使ってなにが想定と違うか確認しよう
■8-1-3 ネットで情報収集をしよう
■8-1-4 AIを活用しよう
■■8-2 YouTubeの質問で多いエラー
■8-2-1 未定義のオブジェクトへのアクセス
■8-2-2 未インストールのライブラリ使用
■8-2-3 モジュールと同一名のファイル
■8-2-4 パスの指定誤り
■■■巻末付録 厳選! プログラミング学習に役立つサービス