認知科学、神経生物学、教育心理学の研究に基づき、イラストや写真を多用したビジュアル重視の画期的なPythonの入門書です。脳の働きに注目し、脳を活性化させる学習効果が高い独自のスタイルで、効率的にPythonプログラミングのスキルを身に付けることが可能です。前半でPythonの基本や特徴を一通り説明してから、実際に独自のWebアプリケーションをステップバイステップで構築する作業を通じて、データベース管理、例外処理、データ処理などの理解を深めていきます。手を動かしながら学べるPython入門書の決定版です。
Head First Python 第2版
―頭とからだで覚えるPythonの基本
Paul Barry 著、嶋田 健志 監訳、木下 哲也 訳
- TOPICS
- Head First , Programming , Python
- 発行年月日
- 2018年03月
- PRINT LENGTH
- 624
- ISBN
- 978-4-87311-829-1
- 原書
- Head First Python, 2E
- FORMAT
- Print PDF
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
第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書籍 索引