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 オブジェクト指向プログラミング   40 
    2.7.1 クラスの定義   40 
      2.7.1.1 コンストラクタ   40 
      2.7.1.2 メソッドの定義   40 
      2.7.1.3 クラス変数   41 
      2.7.1.4 属性の調査   42 
3 KivyによるGUIアプリケーションの構築   43 
  3.1 Kivyの基本   43 
    3.1.1 アプリケーションプログラムの実装   43 
    3.1.2 GUI構築の考え方   44 
      3.1.2.1 Widget(ウィジェット)   44 
      3.1.2.2 Layout(レイアウト)   44 
      3.1.2.3 Screen(スクリーン)   45 
    3.1.3 ウィンドウの扱い   45 
  3.2 基本的なGUIアプリケーション構築の方法   46 
    3.2.1 イベント処理(導入編)   46 
      3.2.1.1 イベントハンドリング   47 
    3.2.2 アプリケーション構築の例   48 
    3.2.3 イベント処理(コールバックの登録による方法)   51 
    3.2.4 ウィジェットの登録と削除   52 
  3.3 各種ウィジェットの使い方   53 
    3.3.1 ラベル:Label   53 
      3.3.1.1 リソースへのフォントの登録   55 
    3.3.2 ボタン:Button   55 
    3.3.3 テキスト入力:TextInput   55 
    3.3.4 チェックボックス:CheckBox   56 
    3.3.5 進捗バー:ProgressBar   56 
    3.3.6 スライダ:Slider   56 
    3.3.7 スイッチ:Switch   56 
    3.3.8 トグルボタン:ToggleButton   57 
    3.3.9 画像:Image   57 
      3.3.9.1 サンプルプログラム   58 
  3.4 Canvasグラフィックス   58 
    3.4.1 Graphicsクラス   59 
    3.4.2 サンプルプログラム   60 
    3.4.3 フレームバッファへの描画   62 
      3.4.3.1 ピクセル値の取り出し   64 
      3.4.3.2 イベントから得られる座標位置   64 
  3.5 スクロールビュー(ScrollView)   64 
    3.5.1 ウィジェットのサイズ設定   66 
  3.6 ウィンドウサイズを固定(リサイズを禁止)する設定   66 
  3.7 Kivy言語によるUIの構築   67 
    3.7.1 Kivy言語の基礎   67 
      3.7.1.1 サンプルプログラムを用いた説明   67 
      3.7.1.2 PythonプログラムとKvファイルの対応   70 
  3.8 時間によるイベント   70 
    3.8.1 時間イベントのスケジュール   70 
  3.9 GUI構築の形式   71 
    3.9.1 スクリーンの扱い: ScreenとScreenManager   71 
    3.9.2 アクションバー: ActionBar   73 
    3.9.3 タブパネル: TabbedPanel   75 
    3.9.4 スワイプ: Carousel   76 
4 実用的なアプリケーション開発に必要な事柄   78 
  4.1 日付と時間に関する処理   78 
    4.1.1 基本的な方法   78 
    4.1.2 timeモジュールの利用   79 
      4.1.2.1 時間の計測   80 
      4.1.2.2 プログラムの実行待ち   80 
  4.2 文字列検索と正規表現   80 
    4.2.1 パターンの検索   80 
      4.2.1.1 正規表現を用いた検索   82 
      4.2.1.2 正規表現を用いたパターンマッチ   83 
  4.3 マルチスレッドとマルチプロセス   84 
    4.3.1 マルチスレッド   84 
    4.3.2 マルチプロセス   85 
      4.3.2.1 ProcessPoolExecutor   86 
    4.3.3 マルチスレッドとマルチプロセスの実行時間の比較   86 
  4.4 モジュールの作成による分割プログラミング   87 
    4.4.1 モジュール   88 
      4.4.1.1 単体のソースファイルとしてのモジュール   88 
    4.4.2 パッケージ(ディレクトリとして構成するモジュール)   88 
      4.4.2.1 モジュールの実行   90 
  4.5 ファイル内でのランダムアクセス   90 
    4.5.1 ファイルのアクセス位置の指定(ファイルのシーク)   90 
    4.5.2 サンプルプログラム   90 
  4.6 エラーと例外の処理   92 
5 TCP/IPによる通信   94 
  5.1 socketモジュール   94 
    5.1.1 ソケットの用意   94 
    5.1.2 送信と受信   95 
    5.1.3 サンプルプログラム   96 
  5.2 WWWコンテンツ解析   97 
    5.2.1 requestsモジュール   97 
    5.2.2 Beautiful Soupモジュール   99 
6 外部プログラムとの連携   102 
  6.1 外部プログラムを起動する方法   102 
    6.1.1 標準入出力の受け渡し   102 
      6.1.1.1 外部プログラムの標準入力のクローズ   105 
    6.1.2 非同期の入出力   105 
    6.1.3 外部プロセスとの同期(終了の待ち受け)   107 
7 サウンドの入出力   108 
  7.1 基礎知識   108 
  7.2 WAV形式ファイルの入出力:waveモジュール   108 
    7.2.1 WAV形式ファイルのオープンとクローズ   108 
      7.2.1.1 WAV形式データの各種属性について   109 
    7.2.2 WAV形式ファイルからの読込み   109 
    7.2.3 サンプルプログラム   109 
    7.2.4 読み込んだフレームデータの扱い   110 
    7.2.5 WAV形式データを出力する例   111 
    7.2.6 サウンドのデータサイズに関する注意点   112 
  7.3 サウンドの入力と再生:PyAudioモジュール   112 
    7.3.1 ストリームを介したサウンド入出力   112 
    7.3.2 WAV形式サウンドファイルの再生   113 
    7.3.3 音声入力デバイスからの入力   115 
8 免責事項   119 
A Pythonに関する情報   120 
  A.1 Pythonのインターネットサイト   120 
  A.2 Pythonのインストール作業の例   120 
  A.3 PIPによるモジュール管理   121 
B Kivyに関する情報   123 
  B.1 Kivyのインストール作業の例   123 
  B.2 GUIデザインツール   123 
C 各種モジュールの紹介   124 
—————————————————————————
 
 
—【モジュールブックの目次】————————————————
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次元のプロット   28 
    3.1.4 乱数の生成   31 
    3.1.5 データの可視化:ヒストグラム,散布図   32 
    3.1.6 データ列に対する演算:\(n\)次元から1次元   33 
    3.1.7 データの可視化:3次元プロット   34 
      3.1.7.1 ワイヤフレーム   34 
      3.1.7.2 面プロット(surface plot)   35 
    3.1.8 高速フーリエ変換(FFT)   36 
      3.1.8.1 時間領域から周波数領域への変換:フーリエ変換   37 
      3.1.8.2 周波数領域から時間領域への変換:フーリエ変逆換   37 
    3.1.9 データの可視化:棒グラフ,グラフのアスペクトについて   40 
      3.1.9.1 棒グラフのプロット   40 
      3.1.9.2 プロットのアスペクト比の指定   40 
    3.1.10 フーリエ変換を使用する際の注意   40 
    3.1.11 行列の計算   41 
      3.1.11.1 行列の和と積   41 
      3.1.11.2 単位行列,ゼロ行列,他   41 
      3.1.11.3 行列の要素の編集   41 
      3.1.11.4 行列式と逆行列   42 
      3.1.11.5 固有値と固有ベクトル   42 
      3.1.11.6 その他   43 
    3.1.12 入出力   44 
      3.1.12.1 配列オブジェクトのファイルI/O   44 
    3.1.13 行列の比較   46 
  3.2 SymPy   47 
    3.2.1 モジュールの読込みに関する注意   47 
    3.2.2 基礎事項   47 
    3.2.3 基本的な数式処理機能   50 
    3.2.4 解析学的処理   52 
      3.2.4.1 極限   52 
      3.2.4.2 導関数   52 
      3.2.4.3 原始関数   53 
      3.2.4.4 級数展開   54 
    3.2.5 各種方程式の求解   54 
    3.2.6 線形代数   56 
    3.2.7 数値近似   57 
    3.2.8 書式の変換出力   57 
      3.2.8.1 \rm \LaTeX    58 
4 セキュリティ関連   59 
  4.1 hashlib   59 
    4.1.1 基本的な使用方法   59 
5 プログラムの高速化   60 
  5.1 Cython   60 
    5.1.1 使用例   60 
    5.1.2 高速化のための調整   62 
  5.2 Numba   63 
    5.2.1 基本的な使用方法   63 
    5.2.2 型指定による高速化   64 
  5.3 ctypes   64 
    5.3.1 C言語による共有ライブラリ作成の例   65 
    5.3.2 共有ライブラリ内の関数を呼び出す例   65 
    5.3.3 引数と戻り値の扱いについて   66 
      5.3.3.1 配列データの受け渡し   68 
6 免責事項   71 
—————————————————————————

コメントを残す

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

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