Head First Python 第2版

―頭とからだで覚えるPythonの基本

[cover photo]
TOPICS
Head First , Programming , Python
発行年月日
PRINT LENGTH
624
ISBN
978-4-87311-829-1
原書
Head First Python, 2E
FORMAT
Print PDF
Ebook
4,180円
Ebookを購入する
Print
4,180円

認知科学、神経生物学、教育心理学の研究に基づき、イラストや写真を多用したビジュアル重視の画期的なPythonの入門書です。脳の働きに注目し、脳を活性化させる学習効果が高い独自のスタイルで、効率的にPythonプログラミングのスキルを身に付けることが可能です。前半でPythonの基本や特徴を一通り説明してから、実際に独自のWebアプリケーションをステップバイステップで構築する作業を通じて、データベース管理、例外処理、データ処理などの理解を深めていきます。手を動かしながら学べるPython入門書の決定版です。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第1刷正誤表

第1刷正誤表

第1刷正誤表

2019年1月28日更新

p.296、最初のコードブロック1行目

【誤】
dbconfg = { 'host': '127.0.0.1', is done!

【正】
dbconfig = { 'host': '127.0.0.1',

p.497、❶のコード

【誤】

data = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
evens = []
for num in data:
      if not num %q 2:
            evens.append(num)

【正】

data = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
evens = []
for num in data:
      if not num % 2:
            evens.append(num)

目次

序章

1章 基本:さっそく始める
    IDLEのウィンドウを理解する
    1行ずつコードを実行する
    関数 + モジュール = 標準ライブラリ
    データ構造を備えている
    メソッドを呼び出すと結果が得られる
    コードブロックをいつ実行するかを決める
    if では他(else)に何が使えるの?
    ブロックにブロックを埋め込むことができる
    Python Shell に戻る
    シェルで試す
    オブジェクトのシーケンスを反復処理する
    指定した回数だけ反復処理する
    課題1の結果をコードに適用する
    実行を一時停止する
    Pythonで乱数整数を生成する
    本格的なビジネスアプリケーションのコードを書く
    インデントにイライラ?
    関数について助けを求める
    range を試してみる
    1章のコード

2章 リストデータ:順序付きデータを扱う
    数値、文字列、そしてオブジェクト
    4つの組み込みデータ構造
    順序なしデータ構造:辞書
    重複を防ぐデータ構造:集合
    リテラルでリストを作成する
    コードが数行以上のときはエディタを使う
    実行時にリストを「拡張」する
    「in」でメンバーであるかを調べる
    リストからオブジェクトを削除する
    リストをオブジェクトで拡張する
    リストにオブジェクトを挿入する
    データ構造のコピー方法
    リストの角かっこ表記の使い方
    リストは開始、終了、刻みを理解する
    リストの開始と終了
    リストからスライスする
    forループはリストを理解する
    Marvinのスライスの詳細
    リストが向かないとき
    2章のコード(1/2)

3章 構造化データ:構造化データを扱う
    辞書はキーと値のペアを格納する
    コード内の辞書の見分け方
    挿入順序は保証されない
    [ ] を使った値の検索
    実行時に辞書を使う
    頻度を更新する
    辞書を反復処理する
    キーと値を反復処理する
    「items」を使って辞書を反復処理する
    辞書はどれくらい動的なのか?
    実行時のKeyErrorを避ける
    「in」を使ってメンバーかどうかを調べる
    使う前には必ず初期化
    「in」の代わりに「not in」を使う
    setdefault メソッドを使う
    効率的に集合を作成する
    集合のメソッドを使う
    タプルの存在理由
    組み込みデータ構造を組み合わせる
    複合データ構造のデータにアクセスする
    3章のコード(1/2)

4章 コードの再利用:関数とモジュール
    関数を使ってコードを再利用する
    関数入門
    関数を呼び出す
    関数は引数を取る
    値を1つ返す
    複数の値を返す
    組み込みデータ構造をおさらいする
    汎用性のある便利な関数を作成する
    別の関数を作成する(1/3)
    引数のデフォルト値を指定する
    位置指定とキーワード指定
    関数についてわかったことを更新する
    コマンドプロンプトからPythonを実行する
    setup.py の作成
    配布ファイルの作成
    pipによるパッケージのインストール
    値渡しのデモ
    参照渡しのデモ
    テストツールのインストール
    PEP 8にどのくらい準拠しているか?
    違反メッセージを理解する
    4章のコード

5章 Webアプリケーションの構築:現実に目を向ける
    Python:すでにわかっていること
    Webアプリケーションに何をさせるか
    Flaskをインストールしよう
    Flaskはどのように機能するのか?
    Flaskアプリケーションを初めて実行する
    Flaskアプリケーションオブジェクトの作成
    関数をURLでデコレートする
    Webアプリケーションを動かす
    Webに機能を公開する
    HTMLフォームの作成
    テンプレートはWebページに対応
    Flaskからテンプレートをレンダリングする
    WebアプリケーションのHTMLフォームを表示する
    テンプレートコードを実行するための準備
    HTTPステータスコードを理解する
    ポストされたデータを処理する
    編集/ 停止/ 開始/ テストのサイクルを改善する
    FlaskでHTMLフォームデータにアクセスする
    Webアプリケーションでリクエストデータを使う
    結果をHTMLとして作成する
    クラウドのための準備をする
    5章のコード

6章 データの格納と操作:データをファイルに格納する
    Webアプリケーションのデータを使って何かを行う
    Pythonはオープン、処理、クローズをサポート
    既存ファイルからデータを読み込む
    さらに優れたオープン、処理、クローズ:with
    Webアプリケーションを介してログを見る
    ソースを見て生のデータを調べる
    (データを)エスケープする
    Webアプリケーションでログ全体を見る
    特定のリクエスト属性をロギングする
    1行の区切りデータをロギングする
    生のデータから読みやすいデータへ変換する
    HTMLで読みやすい出力にする
    テンプレートに表示ロジックを埋め込む
    Jinja2で読みやすい出力にする
    Webアプリケーションコードの現在の状態
    データに問い合わせる
    6章のコード

7章 データベースの利用:PythonのDB-APIを使う
    Webアプリケーションをデータベース対応にする
    タスク1:MySQLサーバをインストールする
    PythonのDB-APIとは
    タスク2:Python用のMySQLデータベースドライバをインストールする
    MySQL-Connector /Pythonのインストール
    タスク3:Webアプリケーションのデータベースとテーブルを作成する
    ログデータの構造を決める
    テーブルがデータを格納できる状態になっているかを確認する    ß
    タスク4:データベースとテーブルを扱うコードを作成する
    データの格納は半分だけ
    データベース用のコードを再利用する最善の方法は?
    再利用したい部分を考える
    インポートはどうなの?
    このパターンには見覚えあり
    悪い知らせは実はそれほど悪くない
    7章のコード

8章 クラス入門:振る舞いと状態を抽象化する
    with文を使う
    オブジェクト指向入門
    クラスからオブジェクトを生成する
    オブジェクトは振る舞いを共有するが、状態は共有しない
    CountFromByでさらに処理を行う
    メソッドの呼び出し:詳細を理解する
    クラスにメソッドを追加する
    self の重要性
    スコープを処理する
    属性名の前に「self」を付ける
    使う前に(属性)値を初期化する
    __init__が属性を初期化する
    __init__を使って属性を初期化する
    CountFromByの表現を理解する
    CountFromBy の表現方法を定義する
    CountFromBy に適切なデフォルトを設定する
    クラス:わかったこと
    8章のコード

9章 コンテキストマネジメントプロトコル:with文を使う
    Webアプリケーションコードを共有する最善の方法は?
    メソッドを使ってコンテキストを管理する
    コンテキストマネージャの動作はわかっています
    新しいコンテキストマネージャクラスを作成する
    データベース構成を使ってクラスを初期化する
    __enter__で前処理を行う
    __exit__で後処理を行う
    Webアプリケーションコードを再考する(1/2)
    「log_request」関数を思い出す
    「log_request」関数を修正する
    「view_the_log」関数を思い出す
    変更するのはコードだけではない
    「view_the_log」関数を修正する
    データに関する質問に答える
    9章のコード(1/2)

10章 関数デコレータ:関数を包む
    (手元のマシンではなく)Webサーバでコードを実行する
    Flaskのセッションはステータスを加える
    辞書検索でステータスを取得する
    セッションを使ってログインを管理する
    ログアウトとステータスチェック用のコードを書く
    関数に関数を渡す
    渡した関数を呼び出す
    引数のリストを受け取る
    引数のリストを処理する
    引数の辞書を受け取る
    引数の辞書を処理する
    あらゆる型の引数をいくつでも受け取る
    関数デコレータを作成する
    最終段階:引数を処理する
    デコレータを利用する
    /viewlog へのアクセス制限に戻る
    10章のコード

11章 例外処理:うまくいかないときに行うこと
    データベースは必ずしも利用できるわけではない
    Web攻撃は深刻な悩み
    入出力は(ときどき)遅い
    関数呼び出しは失敗することがある
    エラーが発生しやすいコードには常にtryを使う
    tryは1つだが、exceptはいくつも追加できる
    全捕捉例外ハンドラ
    「sys」から例外について学ぶ
    全捕捉例外ハンドラ(改訂版)
    Webアプリケーションコードに戻る
    例外を静かに処理する
    その他のデータベースエラーを処理する
    密結合のコードを避ける
    DBcmモジュールの再検討
    カスタム例外を作成する
    「DBcm」では他にどのような問題が発生するの?
    SQLErrorの処理は異なる
    SQLError を投げる
    簡単なおさらい:堅牢にする
    待ち時間の対応? それは状況次第
    11章のコード

11 3/4章 スレッド入門:待ち時間を処理する
    待ち時間:何をすべき?
    どのようにデータベースに問い合わせているの?
    データベースのinsertとselectは違う
    同時に複数のことを行う
    がっかりしないでスレッドを使う
    物事には順序がある:パニくらない
    大丈夫、Flaskが利用できます
    Webアプリケーションは堅牢になったのか?
    11 3/4章のコード(1/2)

12章 高度なイテレーション:猛烈にループする
    CSVデータをリストとして読み込む
    CSVデータを辞書として読み込む
    生データの中の不要な文字を除去してから分割
    メソッド呼び出しをつなげるときには注意する
    データを必要なフォーマットに変換する
    リストの辞書に変換する
    リスト中のパターンを探す
    パターンを内包表記に変換する
    内包表記を詳しく調べる
    辞書内包表記を指定する
    フィルタで内包表記を拡張する
    複雑なところはPython流に対応する
    集合内包表記の動作
    「タプル内包表記」はなぜないの?
    コードを囲む丸かっこ == ジェネレータ
    リスト内包表記を使ってURLを処理する
    ジェネレータを使ってURLを処理する
    関数を定義する
    ジェネレータ関数の威力
    ジェネレータ関数をたどる(1/2)
    最後の1つの質問
    12章のコード
    お別れのとき

付録A インストール:Pythonのインストール
    WindowsにPython 3をインストールする
    Windows のPython 3を確認する
    Windows のPython 3に追加する
    macOS(Mac OS X)にPython 3をインストールする
    macOSのPython 3を確認して設定する
    Linux にPython 3をインストールする

付録B PythonAnywhere:Webアプリケーションのデプロイ
    ステップ0:準備を少し
    ステップ1:サインアップ
    ステップ2:クラウドへのファイルのアップロード
    ステップ3:コードの取得とインストール
    ステップ4:初期Webアプリケーションの作成(1/2)
    ステップ5:Webアプリケーションの設定
    ステップ6:クラウドベースのWebアプリケーションを試す

付録C 取り上げなかった上位10 個のトピック:いつでもさらに学ぶことがある
    1. Python 2はどうなの?
    2. 仮想プログラミング環境
    3. オブジェクト指向の詳細
    4. 文字列などのフォーマット
    5. 整列
    6. 標準ライブラリの詳細
    7. 並列実行
    8. tkinter を使ったGUI(およびturtleの楽しさ)
    9. テストするまで終わらない
    10. デバッグ、デバッグ、デバッグ

付録D 取り上げなかった上位10 個のプロジェクト:さらなるツール、ライブラリ、モジュール
    1. >>>の以外の手段
    2. IDLEの以外の手段
    3. Jupyter Notebook:WebベースのIDE
    4. データサイエンスを行う
    5. Web開発
    6. Webデータ
    7. さらなるデータソース
    8. プログラミングツール
    9. Kivy:「これまでの最上級プロジェクト」に選んだもの
    10. 代替となる実装

付録E 参加する:Pythonコミュニティ
    BDFL(Benevolent Dictator for Life:慈悲深き終身独裁者)
    寛容なコミュニティ:多様性の尊重
    Pythonポッドキャスト
    Zen of Python(Pythonの禅)
    お勧めのPython書籍

索引