Python 3

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

Python3のテキスト
無料で差し上げますので,意見や感想をくださいませ.
→ katsu_wm%mukogawa-u.ac.jp (’%’を’@’に変えるとメールアドレスになります)

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

コメントを残す

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

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