サマリー
Pythonは、簡単に学べること、読みやすいコードを書けること、広範囲にわたるアプリケーションに使えることなどの、多くの優れた特徴を持つ汎用プログラミング言語となる。Pythonは、1991年にGuido van Rossumによって開発されている。
Pythonは、比較的新しい言語であるため、オブジェクト指向プログラミング、手続き型プログラミング、関数型プログラミング等の様々な効果的なプログラミング手法を利用することができる。また、多くのライブラリやフレームワークが用意されているため、Webアプリケーション、デスクトップアプリケーション、科学技術計算、機械学習、人工知能などの分野に広く使われている。さらに、クロスプラットフォームであり、Windows、Mac、Linuxなどの多くのオペレーティングシステムで動作するという特徴を持つ。Pythonは、インタープリタ言語であるため、コンパイルの必要がなく、REPL的な仕組みを持つため、開発サイクルが早くなる。
ここでは「Python基礎&実践プログラミング[プロへのスキルアップ+プロジェクトサンプル]」をベースにPythonコードの実装例について述べている。
今回はpyhtonのインストールと読書メモについて述べる。
Python基礎&実践プログラミング
pythonの単純な使い方として、まずはPythonをインストールすることから始める。システムによっては最初からインストールされている場合がある。macOSあるいはUnix(Linuxを含む)を使っている場合は「ターミナル」を開いてpythpon3(あるいはpython)と入力し、Enterあるいはreturnキーを押す。
Windowsの場合は「コマンドプロンプト」あるいは「手にみしら手とせらていすとくいりり」を起動して、同じようにpython3(あるいはpython)と入力してEnterする。
pythonがインストールされていればバージョンなどが書かれたメッセージが表示され>>>という「プロンプト」が表示される。
メッセージとプロンプトが表示されない場合は、Pythonのインストールが必要になる。やり方としてはhttps://www.python.orgからインストーラーをダウンロードしてインストールを行う。
実際のプログラミングに関しては前述あるいは以下の参考図書を参考のこと。
本書では大きく分けると「Part 1 文法&基本テクニック」「Part 2 目的別テクニック」「Part 3 実践! 開発プロジェクト」の3つのパートとなる。最初のパートでは文字通り基本的な文法等が記載されており、個々の開発時の辞書的な使い方となり、二つ目のパートでは実際に使う上での参考となるコードが記述されている。そして最後のパートでは個別のアプリケーションとなる。
Part 1 文法&基本テクニック 1章 Python事始め―単純なコードからはじめよう 1.1 インストール 1.2 対話型インタプリタ 1.3 アルゴリ...? 1.4 数と式 1.4.1 16真数、8真数、2真数 1.5 変数 1.6 文 1.7 ユーザーからの入力 1.8 関数 1.9 モジュール 1.9.1 cmathと複素数 1.9.2 __future__の指定 1.10 プログラムの保存と実行 1.1-.1 コマンドプロンプトでのPythonプログラムの実行 1.10.2 コマンドとして実行 1.10.3 コメント 1.11 文字列 1.11.1 一重引用符と二重引用符 1.11.2 文字列の連結 1.11.3 文字列の表示-strとrepr 1.11.4 長い文字列、raw文字列、バイト列 1.12 まとめ 2章 リストとタプル―データの保持と操作 2.1 シーケンスの概要 2.2 ーケンスに対する一般的な操作 2.2.1 インデックス指定 2.2.2 スライス指定 2.2.3 シーケンスの加算 2.2.4 シーケンスの乗算 2.2.5 メンバーシップテスト 2.2.6 長さ、最大値、最小値 2.3 リストの便利な機能 2.3.1 list 2.3.2 基本的なリスト操作 2.4 タプル 2.5 まとめ 3章 文字列―整形と分割/結合/検索など 3.1 基本的な文字列操作 3.2 文字列の整形[概要] 3.2.1 formatメソッド 3.2.2 基本的な変換 3.2.3 テンプレート文字列 3.3 文字列の整形の詳細 3.3.1 置換フィールド名 3.3.2 基本的な変換 3.3.3 表示幅、精度、桁区切り文字 3.3.4 符号、左右揃え、ゼロパディング 3.4 文字列のメソッド 3.4.1 center 3.4.2 find 3.4.3 join 3.4.4 lower 3.4.5 replace 3.4.6 split 3.4.7 strip 3.4.8 translate 3.4.9 isで始めるメソッド 3.5 まとめ 4章 辞書 4.1 辞書の長所 4.2 辞書の作成と利用 4.2.1 dict 4.2.2 基本的な辞書の操作 4.2.3 文字列の成形と辞書 4.2.4 辞書用のメソッド 4.3 まとめ 5章 条件分岐、ループ、その他の文 5.1 Printとimportに関する補足 5.1.1 複数の引数を出力 5.1.2 インポート時の別名 5.2 特殊な代入 5.2.1 シーケンスアンパック 5.2.2 連鎖入力 5.2.3 累算入力 5.3 ブロック 5.4 条件と条件文 5.4.1 真偽値 5.4.2 条件付き実行とif文 5.4.3 else文 5.4.4 eliff節 5.4.5 ブロックの入子 5.4.6 複雑な条件 5/4.7 アサーション 5.5 ループ 5.5.1 whileループ 5.5.2 forループ 5.5.3 辞書のイテレーション 5.5.4 イテレーション関連のユーティリティ 5.5.5 ループの制御 5.5.6 ループのelse節 5.6 リスト内包表記 5.7 passel, exec,eval 5.7.1 pass 5.7.2 delによる消去 5.7.3 execとevalによる文字列の実行と評価 5.8まとめ 6章 関数による抽象化―プログラムを明解にする重要な道具 6.1 無精を推奨する 6.2 抽象化 6.3 自作関数の定義 6.3.1 関数の「ドキュメント」 6.3.2 戻り値の有無 6.4 引数の詳細 6.4.1 関数と引数 6.4.2 引数の変更 6.4.3 詳細の隠蔽 6.5 イミュータブルな引数 6.5.1 キーワード引数とデフォルト値 6.5.2 可変超引数 6.5.3 逆の処理 6.6 様々な引数を使った例題 6.7 スコープ 6.8 再帰 6.8.1 階乗と累乗 6.8.2 二分検索 6.9 まとめ 7章 オブジェクトによる抽象化―Pythonにあるべき特徴 7.1オブジェクトの特徴 7.1.1 多態性 7.1.2 多態性とメソッド 7.1.3 多態性の様々な形式 7.1.4 カプセル化 7.1.5 継承 7.2 クラス 7.2.1 独自クラスの作成 7.2.2 属性、関数、メソッド 7.2.3 プライバシー再考 7.2.4 クラスの名前空間 7.2.5 スーパークラスの指定 7.2.6 継承関係の確認 7.2.7 多重継承 7.2.8 インターフェース 7.2.9 抽象基底クラス 7.3 オブジェクト指向設計 7.4 まとめ 8章 例外―特殊な状況が発生したときの処理 8.1 例外とは 8.2 独自の例外の生成 8.2.1 raise文 8.2.2 独自の例外 8.3 例外の捕捉 8.3.1 引数なしのraise 8.3.2 複数のexcept節 8.3.3 ひとつの部六での複数の例外の捕捉 8.3.4 オブジェクトの補足 8.3.5 全てをキャッチ 8.3.6 else節 8.3.7 fibally節 8.4 例外と関数 例外と関数 8.5 ifか例外か 8.6 渓谷 8.7まとめ 9章 特殊メソッド、プロパティ、イテレータ、ジェネレータ 9.1 コンストラクタ 9.1 __init__ 9.2 コンストラクタとオーバーライド 9.3 super 9.2 アイテムへのアクセス 9.2.1 シーケンスとマッピングの基本プロトコル 9.2.2 list, dict,str騎サブクラス化 9.3 プロパティ 9.3.1 property関数 9.3.2 スタティックメソッドとクラスメソッド 9.3.3 __getattr__及び__setattr__と関連メソッド 9.4 イテレータ 9.4.2 イテレータ・プロトコル 9.4.2 イテレータからのシーケンス作成 9.5 ジェネレータ 9.5.1 ジェネレータの定義 9.5.2 再帰ジェネレータ 9.5.3 ジェネレータの構成 9.5.4 ジェネレータのメソッド 9.6 8クイーン 9.6.1 ジェネレータとバックトラッキング 9.6.2 8クイーン問題の内容 9.6.3 状態の表現法 9.6.4 コンフリクトの検知 9.6.5 終了条件 9.6.6 再帰部分 9.6.7 解の仕上げ 9.7 まとめ 10章 モジュール 10.1 モジュール 10.1.1 モジュールはプログラム 10.1.2 モジュールは定義を記述しておくためのもの 10.1.3 モジュールを利用可能にする 10.1.4 パケージ 10.2 モジュールの調査 10.2.1 モジュールの中身の探索 10.2.2 helpによるヘルプ 10.2.3 ドキュメント 10.2.4 「ソースを使う(Use the Source)」 10.3 標準ライブラリ 10.3.1 sys 10.3.2 os 10.3.3 fileinput 10.3.4 集合、ヒープ、双方向キュー 10.3.5 time 10.3.6 random 10.3.7 shelveとjson 10.3.8 re 10.3.9 その他の標準モジュール 10.4 まとめ Part 2 目的別テクニック 11章 ファイルと関連オブジェクト 11.1.1ファイルのオープン 11.1.1 ファイルモード 11.2 基本的なファイルメソッド 11.2.1 読み出し書き出し 11.2.2 出力のパイプ接続 11.2.3 行単位の読み/書き 11.2.4 ファイルのクローズ 11.2.5 基本的なファイルメソッドの利用 11.3 ファイルの内容に関するイテレーション 11.3.1 1文字(あるいは1バイト)ごとの処理 11.3.2 1行ごとの処理 11.3.3 全体の一括読み込み 11.3.5 ファイルイテレータ 11.4 まとめ 12章 GUI 12.1サンプルアプリケーションの作成 12.1 GUIコーディングの検索 12.1.2 レイアウト 12.1.3 イベント処理 12.1.4 プログラムの最終形 12.2 その他のパッケージの使用 12.3 まとめ 13章 データベースプログラミングの基本 13.1 PythonデータベースAPI 13.1.1 グローバル変数 13.1.2 例外 13.1.3 接続とカーソル 13.1.4 型 13.2 SQLiteとPySQLite 13.2.1 sqlite3の利用 13.1.2 単純なデータベースアプリケーション 13.2.3 テーブルの作成とデータの挿入 13.2.4 検索と処理結果 13.3 まとめ 14章 ネットワークプログラミング 14.1ネットワーク関連モジュールの紹介 14.1.1 socket 14.1.2 Requests 14.1.3 リモートファイルのオープン 14.1.4 その他のもジュール 14,2 SocketServerと関連モジュール 14.3 複数同時接続 14.3.1 SocketServerによるフォークとスレッドの違い 14.3.2 selectとpollを使った非同期I/O 14.4 Twisted 14.4.1 Twistedサーバの構築 14.5 まとめ 15章 Webスクレイピング、CGI、Web開発ツール 15.1 スクレイピング 15.1.1 TidyとHTMLの解析 15.1.2 Tidyとは 15.1.3 Tidyの入手 15.1.4 HTML5 15.1.5 HTMLParserの利用 15.1.6 Beautiful Soup 15.2 CGIによる動的Webページ 15.2.1 ステップ1-Webサーバーの準備 15.2.2 ステップ2-「#!行」の追加 15.2.3 ステップ3-パーミッションの設定 15.2.4 CGIのセキュリティリスク 15.2.5 単純なCGIスクリプト 15.2.6 cgitbによるデバッグ 15.3 Webアプリケーションフレームワークの利用 15.3.1 その他のWebアプリケーションフレームワーク 15.4 Webサービス 15.4.1 XML-RPCを使った遠隔手続き呼び出し 15.4.2 SOAP 15.5 まとめ 16章 テストの基本とツール 16.1 まずはテスト、コーディングは後 16.1.1 正確な要求仕様 16.1.2 変更に耐える 16.1.3 テストの手順 16.2 テスト用ツール 16.2.1 doctest 16.2.2 unitest 16.3 単体テストを超えて 16.3.1 ソースコードの検査-PyCheckerとPyLintの活用 16.3.2 プロファイリング 16.4 まとめ 17章 拡張による高速化 17.1 2つの世界の「いいとこどり」 17.2 JythonとIronPython―実に簡単な方法 17.3 C拡張モジュールの記述 17.3.1 SWIG-C/C++コードのラップツール 17.3.2 SWIGで生成されるファイル 17.3.3 回文の処理 17.3.4 インターフェースファイル 17.3.5 SWIGの実行 17.3.6 コンパイル、リンク、実行 17.3.7 コンパイラの魔法の森を抜ける近道 17.3.8 自分の手ではサックスる 17.3.9 リファレンスアカウント 17.3.10 拡張モジュール向けのフレームワーク 17.3.11 回文処理の完成形 17.4 まとめ 18章 パッケージ化の基本 18.1 Setuptoolsの基本 18.2配布物などのアーカイブ 18.3 拡張モジュールのコンパイル 18.4 pyexeによる実行可能プログラム 18.5 まとめ 19章 楽しむためのプログラミングガイドライン 19.1 楽しむべし―プレイフルプログラミング 19.2 プログラミングの柔術 19.3 プロトタイプ作り 19.4 設定・構成 19.4.1 定数の抜き出し 19.4.2 設定・構成ファイル 19.5 ロギング 19.6 さらに詳しく学ぶために 19.7 まとめ Part 3 実践! 開発プロジェクト 20章 [プロジェクト1]テキストからHTMLへの変換 20.1 課題 20.2 役に立つツール 20.3 準備 20.4 最初の実装 20.4.1 テキストブロックの検出 20.4.2 マークアップの付加 20.5 2回目の実装 20.5.2 ハンドラ 20.5.2 スーパークラスHandler 20.5.3 ルール 20.5.4 スーパークラスRule 20.5.5 フィルタ 20.5.6 パーサ 20.5.7 ルールとフィルタの組み立て 20.5.8 全体の組み立て 20.6 さらに試したいこと 21章 [プロジェクト2]図の描画 21.1 課題 21.2 役に立つツール 21.3 準備 21.4 最初の実装 21.4.1 ReportLabを使った描画 21.4.2 ポリラインの組み立て 21.4.3 プロトタイプの記述 21.5 2回目の実装 21.5.1 データの取得 21.5.2 LinePortクラスの使用 21.6 さらに試したいこと 22章 [プロジェクト3]XML解析処理 22.1 課題 22.2 役に立つツール 22.3 準備 22.4 最初の実装 22.4.1 単純なコンテンツハンドラの作成 22.4.2 HTMLページの生成 22.5 2回目の実装 22.5.1 ディスパッチャーミックスインクラス 22.5.2 ヘッダ、ふったの処理の分離とデフォルトの処理 22.5.3 ディレクトリへの対応 22.5.4 イベントハンドラ 22.6 さらに試したいこと 23章 [プロジェクト4]ネットニュースの取得と表示 23.1 課題 23.2 役に立つツール 23.3 準備 23.4 最初の実装 23.5 2回目の実装 23.6 さらに試したいこと 24章 [プロジェクト5]複数人に対応したチャットサーバ 24.1 課題 24.2 役に立つツール 24.3 準備 24.4 最初の実装 24.4.1 ChatServerクラス 24.4.2 ChatSessionクラス 24.4.3 全体の組み立て 24.5 2回目の実装 24.5.1 基本コマンドの解釈処理 24.5.2 チャットルーム 24.5.3 ログインルームとログアウトルーム 24.5.4 メインチャットルーム 24.5.5 新しいサーバ 24.6 さらに試したいこと 25章 [プロジェクト6]XML-RPCを使ったファイル共有 25.1 課題 25.2 役に立つツール 25.3 準備 25.4 最初の実装 25.4.1 シンプルなノードの実装 24.4.2 最初の実装のテスト 25.5 2回目の実装 25.5.1 クライアントインターフェースの作成 25.5.2 例外の生成 25.5.3 ファイル名の検証 25.5.4 2回目の字颯爽のテスト 25.6 さらに試したいこと 26章 [プロジェクト7]ファイル共有アプリケーションのGUI化 26.1 課題 26.2 役に立つツール 26.3 準備 26.4 最初の実装 26.5 2回目の実装 26.6 さらに試したいこと 27章 [プロジェクト8]アーケードゲームの自作 27.1 課題 27.2 役に立つツール 27.2.1 pygame 27.2.2 pygame.locals 27.2.3 pygame.display 27.2.4 pygame.font 27.2.5 pygame.sprite 27.2.6 pygame.mouse 27.2.7 pygame.event 27.2.8 pygame.image 27.3 準備 27.4 最初の実装 27.5 2回目の実装 27.6 さらに試したいこと 27.6.1 さてその次は? 付録A 短縮版Python入門 A.1 基本 A.2 関数 A.3 オブジェクト A.4 その他色々 付録B Pythonリファレンス B.1 式 B.2 文 B2.1 単純文 B.2.2 式の文 B.2.3 アサート文 B.2.4 代入文 B.2.5 累算代入文 B.2.6 pass文 B.2.7 del文 B.2.8 retuen文 B.2.9 yeild文 B2.10 raise文 B.2.11 continue文 B.2.13 import文 B.2.14 global文 B.2.15 nonlocal文 B.3 構文 B3.1. if文 B3.2 while文 B.3.3for文 B.3.4 try文 B.3.5 with文 B.3.6 関数定義 B.3.7 クラス定義
て
コメント
[…] Pyhton基礎&実践プログラミング […]