Python 3

Python3のテキストができました.

Python3のテキスト
無料で差し上げますので,意見や感想をくださいませ.
→ katsu_wm%mukogawa-u.ac.jp (’%’を’@’に変えるとメールアドレスになります)
ページ末尾のコメント入力欄(非公開形式)も使えます.(名前,メールアドレスなどは無しで大丈夫です)

公開されている情報が豊富なPythonですが,アプリづくりのための一通りの入門ができる書籍などが見当たらない上,Kivyの日本語の情報も少ないのでテキストを自前で作ることにしました.
 
特に,既に別の言語を習得している人が,手っ取り早くPythonに取り掛かるのに役立つと考えています.
 
Pythonには有用なライブラリ(モジュール)がたくさん公開されているので,いろんなモジュールの使い方を簡単に説明した「モジュールブック」みたいな本も書いているところです.(途中です)
モジュールブックは現在:
 OpenCV,Pillow,pygame,NumPy,matplotlib,SymPy,hashlib, Cython, Numba, ctypes
について記述しています.
 
【公開しているテキストにつきまして】
 ここに公開しているテキストは「フリーソフトウェア」とします.(著作権は保持しています)
商用,非商用問わずご使用ください.印刷,再配布共にしていただいて構いませんが,その際は内容の改変をせずにお願いします.
 内容に不備がありましたら是非ご連絡ください.可能な限り迅速に修正して再配信いたしますが,テキスト内の「免責事項」に了承してください.
 
■ Pythonのテキストに掲載しているサンプルプログラム
 →こちら
 
■ 「Python3モジュールブック」に掲載しているサンプルプログラム
 →こちら
 
プログラム開発や教材作成の参考にしている書籍(広告リンクになっています)
 
—【テキスト本体の目次】—————————————————–
1 はじめに  1 
  1.1 Pythonでできること  1 
  1.2 本書の内容  1 
  1.3 処理系の導入(インストール)と起動の方法  2 
    1.3.1 対話モード  2 
  1.4 使用するGUIライブラリ  2 
  1.5 Pythonに関する詳しい情報  2 
2 Pythonの基礎  3 
  2.1 スクリプトの実行  3 
    2.1.1 プログラム中に記述するコメント  3 
    2.1.2 プログラムのインデント  4 
  2.2 変数とデータの型  4 
    2.2.1 数値  5 
      2.2.1.1 浮動小数点数の丸め  6 
      2.2.1.2 数学関数  6 
      2.2.1.3 多倍長精度の浮動小数点数の扱い  7 
      2.2.1.4 乱数の生成  8 
    2.2.2 文字列  9 
      2.2.2.1 文字列の分解と合成  10 
      2.2.2.2 文字列の置換  11 
      2.2.2.3 文字の置換  11 
      2.2.2.4 文字コード/文字の種別  12 
    2.2.3 真理値  13 
    2.2.4 ヌルオブジェクト  13 
    2.2.5 型の変換  13 
    2.2.6 基数の変換  13 
      2.2.6.1 n進数→10進数  13 
      2.2.6.2 10進数→n進数  14 
  2.3 データ構造  14 
    2.3.1 リスト  14 
      2.3.1.1 例外処理  19 
    2.3.2 タプル  21 
      2.3.2.1 特殊なタプル  21 
    2.3.3 セット  22 
    2.3.4 辞書型  23 
    2.3.5 添字(スライス)の高度な応用  25 
    2.3.6 データ構造の変換  25 
  2.4 制御構造  26 
    2.4.1 繰り返し(1): for  26 
      2.4.1.1 rangeオブジェクト  27 
      2.4.1.2 for文におけるelse  28 
      2.4.1.3 forを使ったデータ構造の生成(要素の内包表記)  28 
    2.4.2 繰り返し(2): while  29 
    2.4.3 繰り返しの中断とスキップ  30 
    2.4.4 条件分岐  30 
      2.4.4.1 条件式  30 
      2.4.4.2 各種の「空」値に関する条件判定  31 
  2.5 入出力  33 
    2.5.1 標準出力  33 
      2.5.1.1 出力データの書式設定  33 
    2.5.2 標準入力  35 
    2.5.3 ファイルからの入力  37 
      2.5.3.1 バイト列の扱い  39 
      2.5.3.2 バイト列のコード体系を調べる方法  40 
      2.5.3.3 ファイルの内容を一度で読み込む方法  41 
    2.5.4 ファイルへの出力  41 
    2.5.5 パス(ファイル,ディレクトリ)の扱い  41 
      2.5.5.1 カレントディレクトリに関する操作  41 
      2.5.5.2 ディレクトリ内容の一覧  42 
      2.5.5.3 ファイル,ディレクトリの削除  42 
      2.5.5.4 パスを扱うための更に別の方法:pathlib  42 
    2.5.6 コマンド引数の取得  43 
  2.6 関数の定義  44 
    2.6.1 仮引数について  44 
    2.6.2 変数のスコープ(関数定義の内外での変数の扱い)  45 
  2.7 オブジェクト指向プログラミング  47 
    2.7.1 クラスの定義  47 
      2.7.1.1 コンストラクタ  47 
      2.7.1.2 メソッドの定義  47 
      2.7.1.3 クラス変数  48 
      2.7.1.4 属性の調査  49 
  2.8 データ構造に則したプログラミング  49 
    2.8.1 map関数  50 
    2.8.2 lambdaと関数定義  51 
    2.8.3 filter  53 
    2.8.4 3項演算子としての if~else…  53 
3 KivyによるGUIアプリケーションの構築  54 
  3.1 Kivyの基本  54 
    3.1.1 アプリケーションプログラムの実装  54 
    3.1.2 GUI構築の考え方  55 
      3.1.2.1 Widget(ウィジェット)  55 
      3.1.2.2 Layout(レイアウト)  56 
      3.1.2.3 Screen(スクリーン)  56 
    3.1.3 ウィンドウの扱い  57 
  3.2 基本的なGUIアプリケーション構築の方法  58 
    3.2.1 イベント処理(導入編)  58 
      3.2.1.1 イベントハンドリング  58 
    3.2.2 アプリケーション構築の例  59 
    3.2.3 イベント処理(コールバックの登録による方法)  62 
    3.2.4 ウィジェットの登録と削除  63 
    3.2.5 アプリケーションの開始と終了のハンドリング  64 
  3.3 各種ウィジェットの使い方  65 
    3.3.1 ラベル:Label  65 
      3.3.1.1 リソースへのフォントの登録  66 
    3.3.2 ボタン:Button  67 
    3.3.3 テキスト入力:TextInput  67 
    3.3.4 チェックボックス:CheckBox  68 
    3.3.5 進捗バー:ProgressBar  68 
    3.3.6 スライダ:Slider  68 
    3.3.7 スイッチ:Switch  68 
    3.3.8 トグルボタン:ToggleButton  69 
    3.3.9 画像:Image  69 
      3.3.9.1 サンプルプログラム  69 
  3.4 Canvasグラフィックス  70 
    3.4.1 Graphicsクラス  71 
    3.4.2 サンプルプログラム  72 
    3.4.3 フレームバッファへの描画  74 
      3.4.3.1 ピクセル値の取り出し  76 
      3.4.3.2 イベントから得られる座標位置  76 
  3.5 スクロールビュー(ScrollView)  76 
    3.5.1 ウィジェットのサイズ設定  78 
  3.6 ウィンドウサイズを固定(リサイズを禁止)する設定  78 
  3.7 Kivy言語によるUIの構築  78 
    3.7.1 Kivy言語の基礎  79 
      3.7.1.1 サンプルプログラムを用いた説明  79 
      3.7.1.2 PythonプログラムとKvファイルの対応  81 
  3.8 時間によるイベント  82 
    3.8.1 時間イベントのスケジュール  82 
  3.9 GUI構築の形式  82 
    3.9.1 スクリーンの扱い: ScreenとScreenManager  82 
    3.9.2 アクションバー: ActionBar  85 
    3.9.3 タブパネル: TabbedPanel  86 
    3.9.4 スワイプ: Carousel  88 
4 実用的なアプリケーション開発に必要な事柄  89 
  4.1 日付と時間に関する処理  89 
    4.1.1 基本的な方法  89 
    4.1.2 timeモジュールの利用  91 
      4.1.2.1 時間の計測  91 
      4.1.2.2 プログラムの実行待ち  91 
  4.2 文字列検索と正規表現  91 
    4.2.1 パターンの検索  91 
      4.2.1.1 正規表現を用いた検索  94 
      4.2.1.2 正規表現を用いたパターンマッチ  95 
      4.2.1.3 行頭や行末でのパターンマッチ  95 
  4.3 マルチスレッドとマルチプロセス  96 
    4.3.1 マルチスレッド  96 
    4.3.2 マルチプロセス  97 
      4.3.2.1 ProcessPoolExecutor  98 
    4.3.3 マルチスレッドとマルチプロセスの実行時間の比較  98 
  4.4 モジュールの作成による分割プログラミング  99 
    4.4.1 モジュール  99 
      4.4.1.1 単体のソースファイルとしてのモジュール  99 
    4.4.2 パッケージ(ディレクトリとして構成するモジュール)  100 
      4.4.2.1 モジュールの実行  102 
  4.5 ファイル内でのランダムアクセス  102 
    4.5.1 ファイルのアクセス位置の指定(ファイルのシーク)  102 
    4.5.2 サンプルプログラム  102 
  4.6 エラーと例外の処理  104 
5 TCP/IPによる通信  106 
  5.1 socketモジュール  106 
    5.1.1 ソケットの用意  106 
    5.1.2 送信と受信  107 
    5.1.3 サンプルプログラム  108 
  5.2 WWWコンテンツ解析  109 
    5.2.1 requestsモジュール  109 
    5.2.2 Beautiful Soupモジュール  111 
6 外部プログラムとの連携  114 
  6.1 外部プログラムを起動する方法  114 
    6.1.1 標準入出力の受け渡し  114 
      6.1.1.1 外部プログラムの標準入力のクローズ  117 
    6.1.2 非同期の入出力  117 
    6.1.3 外部プロセスとの同期(終了の待ち受け)  119 
7 サウンドの入出力  120 
  7.1 基礎知識  120 
  7.2 WAV形式ファイルの入出力:waveモジュール  120 
    7.2.1 WAV形式ファイルのオープンとクローズ  120 
      7.2.1.1 WAV形式データの各種属性について  121 
    7.2.2 WAV形式ファイルからの読込み  121 
    7.2.3 サンプルプログラム  121 
    7.2.4 読み込んだフレームデータの扱い  122 
    7.2.5 WAV形式データを出力する例  123 
    7.2.6 サウンドのデータサイズに関する注意点  125 
  7.3 サウンドの入力と再生:PyAudioモジュール  126 
    7.3.1 ストリームを介したサウンド入出力  126 
    7.3.2 WAV形式サウンドファイルの再生  127 
      7.3.2.1 サウンド再生の終了の検出  129 
    7.3.3 音声入力デバイスからの入力  129 
8 免責事項  133 
A Pythonに関する情報  134 
  A.1 Pythonのインターネットサイト  134 
  A.2 Pythonのインストール作業の例  134 
  A.3 PIPによるモジュール管理  135 
    A.3.1 PIPコマンドが実行できない場合の解決策  136 
B Kivyに関する情報  137 
  B.1 Kivyのインストール作業の例  137 
  B.2 Kivy利用時のトラブルを回避するための情報  138 
    B.2.1 Kivyが使用する描画APIの設定  138 
  B.3 GUIデザインツール  138 
C 各種モジュールの紹介  139 
—————————————————————————
 
 
—【モジュールブックの目次】————————————————
1 画像の入出力と処理  1 
  1.1 OpenCV  1 
    1.1.1 動画像の入力  2 
    1.1.2 ユーザインターフェース  2 
    1.1.3 フレームのファイルへの保存  3 
    1.1.4 静止画像の読込み  3 
    1.1.5 色の分解と合成  4 
    1.1.6 画像の類似性の検査  5 
      1.1.6.1 AKAZE特徴量の算出  5 
      1.1.6.2 特徴量データの照合  6 
      1.1.6.3 サンプルプログラム  6 
  1.2 Pillow  8 
    1.2.1 画像ファイルの読込みと保存  8 
    1.2.2 Imageオブジェクトの新規作成  9 
    1.2.3 画像閲覧  9 
    1.2.4 画像編集  10 
      1.2.4.1 画像の拡大と縮小  10 
      1.2.4.2 画像の部分の取り出し  10 
      1.2.4.3 画像の複製  10 
      1.2.4.4 画像の貼り付け  11 
      1.2.4.5 画像の回転  11 
    1.2.5 画像処理  11 
      1.2.5.1 色の分解と合成  11 
    1.2.6 描画  12 
    1.2.7 アニメーションGIFの作成  13 
2 GUIとマルチメディア  14 
  2.1 pygame  14 
    2.1.1 基礎事項  14 
      2.1.1.1 Surfaceオブジェクト  14 
      2.1.1.2 アプリケーションの実行ループ  14 
    2.1.2 描画機能  16 
      2.1.2.1 描画のサンプルプログラム  19 
      2.1.2.2 回転,拡縮のサンプルプログラム  20 
    2.1.3 キーボードとマウスのハンドリング  22 
    2.1.4 音声の再生  23 
    2.1.5 スプライトの利用  24 
3 科学技術系  29 
  3.1 数値計算と可視化のためのパッケージ:NumPy / matplotlib  29 
    3.1.1 配列オブジェクトの生成  29 
      3.1.1.1 多次元配列の生成  31 
      3.1.1.2 配列の要素へのアクセス  31 
    3.1.2 データ列に対する演算:1次元から1次元  32 
    3.1.3 データの可視化:基本  33 
      3.1.3.1 2次元のプロット:折れ線グラフ  33 
      3.1.3.2 複数のグラフの作成  36 
      3.1.3.3 グラフを画像ファイルとして保存する方法  39 
    3.1.4 乱数の生成  40 
    3.1.5 データの可視化:ヒストグラム,散布図  41 
    3.1.6 データ列に対する演算:\(n\)次元から1次元  42 
    3.1.7 データの可視化:3次元プロット  43 
      3.1.7.1 ワイヤフレーム  43 
      3.1.7.2 面プロット(surface plot)  44 
    3.1.8 高速フーリエ変換(FFT)  45 
      3.1.8.1 時間領域から周波数領域への変換:フーリエ変換  46 
      3.1.8.2 周波数領域から時間領域への変換:フーリエ変逆換  46 
    3.1.9 データの可視化:棒グラフ,グラフのアスペクトについて  49 
      3.1.9.1 棒グラフのプロット  49 
      3.1.9.2 プロットのアスペクト比の指定  49 
    3.1.10 フーリエ変換を使用する際の注意  49 
    3.1.11 行列の計算  50 
      3.1.11.1 行列の和と積  50 
      3.1.11.2 単位行列,ゼロ行列,他  50 
      3.1.11.3 行列の要素の編集  51 
      3.1.11.4 行列式と逆行列  51 
      3.1.11.5 固有値と固有ベクトル  52 
      3.1.11.6 その他  52 
    3.1.12 入出力  53 
      3.1.12.1 配列オブジェクトのファイルI/O  53 
    3.1.13 行列の比較  56 
    3.1.14 配列を処理するユーザ定義関数の実装について  56 
  3.2 SymPy  59 
    3.2.1 モジュールの読込みに関する注意  59 
    3.2.2 基礎事項  59 
    3.2.3 基本的な数式処理機能  62 
    3.2.4 解析学的処理  64 
      3.2.4.1 極限  64 
      3.2.4.2 導関数  64 
      3.2.4.3 原始関数  65 
      3.2.4.4 級数展開  66 
    3.2.5 各種方程式の求解  66 
      3.2.5.1 代数方程式の求解  66 
      3.2.5.2 微分方程式の求解  67 
      3.2.5.3 階差方程式の求解  67 
    3.2.6 線形代数  68 
    3.2.7 総和  69 
    3.2.8 数値近似  70 
    3.2.9 書式の変換出力  70 
      3.2.9.1 \rm \LaTeX   70 
    3.2.10 グラフのプロット  70 
4 セキュリティ関連  72 
  4.1 hashlib  72 
    4.1.1 基本的な使用方法  72 
5 プログラムの高速化  73 
  5.1 Cython  73 
    5.1.1 使用例  73 
    5.1.2 高速化のための調整  75 
  5.2 Numba  76 
    5.2.1 基本的な使用方法  76 
    5.2.2 型指定による高速化  77 
  5.3 ctypes  77 
    5.3.1 C言語による共有ライブラリ作成の例  78 
    5.3.2 共有ライブラリ内の関数を呼び出す例  78 
    5.3.3 引数と戻り値の扱いについて  79 
      5.3.3.1 配列データの受け渡し  81 
6 対話作業環境(JupyterLab)  84 
  6.1 基礎事項  84 
    6.1.1 起動と終了  85 
    6.1.2 表示領域の構成と操作方法  85 
      6.1.2.1 ノートブックの使用例  86 
      6.1.2.2 カーネル(Kernel)について  88 
  6.2 Markdownによるコメント表示  88 
  6.3 使用例  90 
    6.3.1 MathJaxによるSymPyの式の整形表示  90 
    6.3.2 IPython.displayモジュールによるサウンドの再生  91 
7 免責事項  93 
—————————————————————————

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)