Python基礎&実践プログラミング

ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 プログラミング Python 本ブログのナビ

サマリー

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 クラス定義

コメント

  1. […] Pyhton基礎&実践プログラミング […]

タイトルとURLをコピーしました