Python 3

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

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

公開されている情報が豊富なPythonですが,アプリづくりのための一通りの入門ができる書籍などが見当たらない上,Kivyの日本語の情報も少ないのでテキストを自前で作ることにしました.
 
特に,既に別の言語を習得している人が,手っ取り早くPythonに取り掛かるのに役立つと考えています.
 
Pythonには有用なライブラリ(モジュール)がたくさん公開されているので,いろんなモジュールの使い方を簡単に説明した「モジュールブック」みたいな本も書いているところです.(途中です)
モジュールブックは現在:
 OpenCV,Pillow,pygame,Eel,NumPy,matplotlib,SymPy,hashlib, Cython, Numba, ctypes, JupyterLab
について記述しています.
 
【公開しているテキストにつきまして】
 ここに公開しているテキストは「フリーソフトウェア」とします.(著作権は保持しています)
商用,非商用問わずご使用ください.印刷,再配布共にしていただいて構いませんが,その際は内容の改変をせずにお願いします.
 内容に不備がありましたら是非ご連絡ください.可能な限り迅速に修正して再配信いたしますが,テキスト内の「免責事項」に了承してください.
 
■ Pythonのテキストに掲載しているサンプルプログラム
 →こちら
 
■ 「Python3モジュールブック」に掲載しているサンプルプログラム
 →こちら
 
プログラム開発や教材作成の参考にしている書籍(広告リンクになっています)
 
—【テキスト本体の目次】—————————————————-
1 はじめに   1 
  1.1 Pythonでできること   1 
  1.2 本書の内容   1 
    1.2.1 本書の読み方   2 
  1.3 処理系の導入(インストール)と起動の方法   2 
    1.3.1 Python処理系のディストリビューション(配布形態)   2 
    1.3.2 Python処理系の起動   2 
    1.3.3 対話モード   3 
  1.4 使用するGUIライブラリ   3 
  1.5 Pythonに関する詳しい情報   3 
2 Pythonの基礎   4 
  2.1 スクリプトの実行   4 
    2.1.1 プログラム中に記述するコメント   4 
    2.1.2 プログラムのインデント   5 
  2.2 変数とデータの型   5 
    2.2.1 変数の開放(廃棄)   6 
    2.2.2 数値   6 
      2.2.2.1 浮動小数点数の丸め   8 
      2.2.2.2 数学関数   8 
      2.2.2.3 多倍長精度の浮動小数点数の扱い   8 
      2.2.2.4 乱数の生成   9 
    2.2.3 文字列   10 
      2.2.3.1 文字列の分解と合成   11 
      2.2.3.2 文字列の置換   13 
      2.2.3.3 文字の置換   13 
      2.2.3.4 大文字/小文字の変換と判定   13 
      2.2.3.5 文字列の含有検査   14 
      2.2.3.6 文字コード/文字の種別   14 
    2.2.4 真理値   15 
    2.2.5 ヌルオブジェクト   15 
    2.2.6 型の変換   16 
    2.2.7 基数の変換   16 
      2.2.7.1 n進数→10進数   16 
      2.2.7.2 10進数→n進数   17 
  2.3 データ構造   17 
    2.3.1 リスト   17 
      2.3.1.1 例外処理   22 
      2.3.1.2 要素の整列   23 
      2.3.1.3 リストの複製   24 
    2.3.2 タプル   24 
      2.3.2.1 特殊なタプル   25 
    2.3.3 セット   25 
    2.3.4 辞書型   26 
    2.3.5 添字(スライス)の高度な応用   28 
    2.3.6 データ構造の変換   29 
  2.4 制御構造   29 
    2.4.1 繰り返し(1): for   29 
      2.4.1.1 rangeオブジェクト   30 
      2.4.1.2 for文におけるelse   31 
      2.4.1.3 forを使ったデータ構造の生成(要素の内包表記)   31 
      2.4.1.4 イテレータ   32 
    2.4.2 繰り返し(2): while   33 
    2.4.3 繰り返しの中断とスキップ   34 
    2.4.4 条件分岐   34 
      2.4.4.1 条件式   34 
      2.4.4.2 各種の「空」値に関する条件判定   35 
  2.5 入出力   37 
    2.5.1 標準出力   37 
      2.5.1.1 出力データの書式設定   37 
      2.5.1.2 sysモジュールによる標準出力の扱い   39 
    2.5.2 標準入力   40 
      2.5.2.1 sysモジュールによる標準入力の扱い   41 
    2.5.3 ファイルからの入力   41 
      2.5.3.1 バイト列の扱い   44 
      2.5.3.2 バイト列のコード体系を調べる方法   45 
      2.5.3.3 指定したバイト数だけ読み込む方法   45 
      2.5.3.4 ファイルの内容を一度で読み込む方法   45 
      2.5.3.5 ファイルをイテレータとして読み込む方法   46 
    2.5.4 ファイルへの出力   46 
    2.5.5 標準エラー出力   46 
    2.5.6 パス(ファイル,ディレクトリ)の扱い   48 
      2.5.6.1 カレントディレクトリに関する操作   48 
      2.5.6.2 ディレクトリ内容の一覧   48 
      2.5.6.3 ファイルのサイズの取得   49 
      2.5.6.4 ファイル,ディレクトリの検査   49 
      2.5.6.5 ファイル,ディレクトリの削除   49 
      2.5.6.6 実行中のスクリプトに関する情報   49 
      2.5.6.7 パスを扱うための更に別の方法:pathlib   50 
    2.5.7 コマンド引数の取得   52 
  2.6 関数の定義   53 
    2.6.1 仮引数について   53 
    2.6.2 変数のスコープ(関数定義の内外での変数の扱い)   54 
  2.7 オブジェクト指向プログラミング   56 
    2.7.1 クラスの定義   56 
      2.7.1.1 コンストラクタ   56 
      2.7.1.2 メソッドの定義   56 
      2.7.1.3 クラス変数   57 
      2.7.1.4 属性の調査   58 
  2.8 データ構造に則したプログラミング   58 
    2.8.1 map関数   59 
    2.8.2 lambdaと関数定義   61 
    2.8.3 filter   62 
    2.8.4 3項演算子としての if~else…   63 
3 KivyによるGUIアプリケーションの構築   64 
  3.1 Kivyの基本   64 
    3.1.1 アプリケーションプログラムの実装   64 
    3.1.2 GUI構築の考え方   65 
      3.1.2.1 Widget(ウィジェット)   65 
      3.1.2.2 Layout(レイアウト)   66 
      3.1.2.3 Screen(スクリーン)   66 
    3.1.3 ウィンドウの扱い   67 
    3.1.4 マルチタッチの無効化   67 
  3.2 基本的なGUIアプリケーション構築の方法   68 
    3.2.1 イベント処理(導入編)   68 
      3.2.1.1 イベントハンドリング   68 
    3.2.2 アプリケーション構築の例   69 
    3.2.3 イベント処理(コールバックの登録による方法)   72 
    3.2.4 ウィジェットの登録と削除   74 
    3.2.5 アプリケーションの開始と終了のハンドリング   75 
  3.3 各種ウィジェットの使い方   75 
    3.3.1 ラベル:Label   75 
      3.3.1.1 リソースへのフォントの登録   77 
    3.3.2 ボタン:Button   77 
    3.3.3 テキスト入力:TextInput   78 
    3.3.4 チェックボックス:CheckBox   78 
    3.3.5 進捗バー:ProgressBar   78 
    3.3.6 スライダ:Slider   78 
    3.3.7 スイッチ:Switch   79 
    3.3.8 トグルボタン:ToggleButton   79 
    3.3.9 画像:Image   79 
      3.3.9.1 サンプルプログラム   80 
  3.4 Canvasグラフィックス   81 
    3.4.1 Graphicsクラス   81 
    3.4.2 サンプルプログラム   83 
    3.4.3 フレームバッファへの描画   85 
      3.4.3.1 ピクセル値の取り出し   86 
      3.4.3.2 イベントから得られる座標位置   86 
  3.5 スクロールビュー(ScrollView)   87 
    3.5.1 ウィジェットのサイズ設定   88 
  3.6 ウィンドウサイズを固定(リサイズを禁止)する設定   88 
  3.7 Kivy言語によるUIの構築   89 
    3.7.1 Kivy言語の基礎   89 
      3.7.1.1 サンプルプログラムを用いた説明   89 
      3.7.1.2 PythonプログラムとKvファイルの対応   92 
  3.8 時間によるイベント   92 
    3.8.1 時間イベントのスケジュール   92 
  3.9 GUI構築の形式   93 
    3.9.1 スクリーンの扱い: ScreenとScreenManager   93 
    3.9.2 アクションバー: ActionBar   95 
    3.9.3 タブパネル: TabbedPanel   97 
    3.9.4 スワイプ: Carousel   98 
4 実用的なアプリケーション開発に必要な事柄   100 
  4.1 日付と時間に関する処理   100 
    4.1.1 基本的な機能   100 
      4.1.1.1 日付,時刻の書式整形   101 
      4.1.1.2 datetimeのプロパティ   101 
    4.1.2 timeモジュールの利用   102 
      4.1.2.1 時間の計測   102 
      4.1.2.2 プログラムの実行待ち   103 
  4.2 文字列検索と正規表現   103 
    4.2.1 パターンの検索   103 
      4.2.1.1 正規表現を用いた検索   105 
      4.2.1.2 正規表現を用いたパターンマッチ   106 
      4.2.1.3 行頭や行末でのパターンマッチ   107 
  4.3 マルチスレッドとマルチプロセス   108 
    4.3.1 マルチスレッド   108 
    4.3.2 マルチプロセス   109 
      4.3.2.1 ProcessPoolExecutor   109 
    4.3.3 マルチスレッドとマルチプロセスの実行時間の比較   110 
  4.4 モジュールの作成による分割プログラミング   111 
    4.4.1 モジュール   111 
      4.4.1.1 単体のソースファイルとしてのモジュール   111 
    4.4.2 パッケージ(ディレクトリとして構成するモジュール)   112 
      4.4.2.1 モジュールの実行   113 
    4.4.3 モジュールが配置されているディレクトリの調査   114 
  4.5 ファイル内でのランダムアクセス   115 
    4.5.1 ファイルのアクセス位置の指定(ファイルのシーク)   115 
    4.5.2 サンプルプログラム   115 
  4.6 execとeval   116 
  4.7 collectionsモジュール   118 
  4.8 エラーと例外の処理   119 
  4.9 処理環境に関する情報の取得   120 
    4.9.1 Pythonのバージョン情報の取得   120 
    4.9.2 platformモジュールの利用   120 
    4.9.3 環境変数の参照   122 
5 TCP/IPによる通信   123 
  5.1 socketモジュール   123 
    5.1.1 ソケットの用意   123 
    5.1.2 送信と受信   124 
    5.1.3 サンプルプログラム   125 
  5.2 WWWコンテンツ解析   126 
    5.2.1 requestsモジュール   126 
    5.2.2 Beautiful Soupモジュール   128 
6 外部プログラムとの連携   131 
  6.1 外部プログラムを起動する方法   131 
    6.1.1 標準入出力の受け渡し   131 
      6.1.1.1 外部プログラムの標準入力のクローズ   134 
    6.1.2 非同期の入出力   134 
    6.1.3 外部プロセスとの同期(終了の待ち受け)   136 
7 サウンドの入出力   137 
  7.1 基礎知識   137 
  7.2 WAV形式ファイルの入出力:waveモジュール   137 
    7.2.1 WAV形式ファイルのオープンとクローズ   137 
      7.2.1.1 WAV形式データの各種属性について   138 
    7.2.2 WAV形式ファイルからの読込み   138 
    7.2.3 サンプルプログラム   138 
    7.2.4 読み込んだフレームデータの扱い   139 
    7.2.5 WAV形式データを出力する例   140 
    7.2.6 サウンドのデータサイズに関する注意点   142 
  7.3 サウンドの入力と再生:PyAudioモジュール   143 
    7.3.1 ストリームを介したサウンド入出力   143 
    7.3.2 WAV形式サウンドファイルの再生   144 
      7.3.2.1 サウンド再生の終了の検出   146 
    7.3.3 音声入力デバイスからの入力   146 
8 免責事項   150 
9 テキストの最新版と更新情報   150 
A Pythonに関する情報   151 
  A.1 Pythonのインターネットサイト   151 
  A.2 Pythonのインストール作業の例   151 
    A.2.1 PSF版インストールパッケージによる方法   151 
    A.2.2 Anacondaによる方法   152 
  A.3 Python起動のしくみ   153 
    A.3.1 PSF版Pythonの起動   153 
    A.3.2 Anaconda Navigatorの起動   153 
    A.3.3 Anaconda Promptの起動   154 
  A.4 PIPによるモジュール管理   156 
    A.4.1 PIPコマンドが実行できない場合の解決策   157 
B Kivyに関する情報   158 
  B.1 Kivyのインストール作業の例   158 
  B.2 Kivy利用時のトラブルを回避するための情報   159 
    B.2.1 Kivyが使用する描画APIの設定   159 
    B.2.2 SDLについて   159 
  B.3 GUIデザインツール   159 
C Tkinter:基本的なGUIツールキット   160 
  C.1 基本的な扱い方   160 
    C.1.1 使用例   161 
    C.1.2 ウィジェットの配置   162 
  C.2 各種のウィジェット   165 
  C.3 メニューの構築   173 
  C.4 Canvasの描画   174 
    C.4.1 図形の管理   177 
  C.5 イベントハンドリング   179 
    C.5.1 時間を指定した関数の実行   182 
  C.6 複数のウィンドウの表示   183 
  C.7 ディスプレイやウィンドウに関する情報の取得   184 
  C.8 メッセージボックス(messagebox)   185 
    C.8.1 アプリケーション終了のハンドリング   187 
D モジュールの取り扱いについて   188 
  D.1 モジュールの読込みに関すること   188 
    D.1.1 モジュール読込みにおける別名の付与   188 
    D.1.2 接頭辞を省略するためのモジュール読込み   188 
      D.1.2.1 接頭辞を省略する際の注意(名前の衝突)   189 
  D.2 各種モジュールの紹介   190
—————————————————————————
 
 
—【モジュールブックの目次】————————————————
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 
  2.2 Eel   29 
    2.2.1 基礎事項   29 
    2.2.2 Python/JavaScriptで記述した関数の呼出し   31 
      2.2.2.1 関数の戻り値について   32 
3 科学技術系   33 
  3.1 数値計算と可視化のためのパッケージ:NumPy / matplotlib   33 
    3.1.1 配列オブジェクトの生成   33 
      3.1.1.1 多次元配列の生成   35 
      3.1.1.2 配列の要素へのアクセス   35 
    3.1.2 データ列に対する演算:1次元から1次元   36 
    3.1.3 データの可視化:基本   37 
      3.1.3.1 2次元のプロット:折れ線グラフ   37 
      3.1.3.2 複数のグラフの作成   40 
      3.1.3.3 グラフを画像ファイルとして保存する方法   43 
    3.1.4 乱数の生成   44 
    3.1.5 データの可視化:ヒストグラム,散布図   45 
    3.1.6 データ列に対する演算:\(n\)次元から1次元   46 
    3.1.7 データの可視化:3次元プロット   47 
      3.1.7.1 ワイヤフレーム   47 
      3.1.7.2 面プロット(surface plot)   48 
    3.1.8 高速フーリエ変換(FFT)   49 
      3.1.8.1 時間領域から周波数領域への変換:フーリエ変換   50 
      3.1.8.2 周波数領域から時間領域への変換:フーリエ変逆換   50 
    3.1.9 データの可視化:棒グラフ,グラフのアスペクトについて   53 
      3.1.9.1 棒グラフのプロット   53 
      3.1.9.2 プロットのアスペクト比の指定   53 
    3.1.10 フーリエ変換を使用する際の注意   53 
    3.1.11 行列の計算   54 
      3.1.11.1 行列の和と積   54 
      3.1.11.2 単位行列,ゼロ行列,他   54 
      3.1.11.3 行列の要素の編集   55 
      3.1.11.4 行列式と逆行列   55 
      3.1.11.5 固有値と固有ベクトル   56 
      3.1.11.6 その他   56 
    3.1.12 入出力   57 
      3.1.12.1 配列オブジェクトのファイルI/O   57 
    3.1.13 行列の比較   60 
    3.1.14 配列を処理するユーザ定義関数の実装について   60 
  3.2 SymPy   63 
    3.2.1 モジュールの読込みに関する注意   63 
    3.2.2 基礎事項   63 
    3.2.3 基本的な数式処理機能   66 
    3.2.4 解析学的処理   68 
      3.2.4.1 極限   68 
      3.2.4.2 導関数   69 
      3.2.4.3 原始関数   70 
      3.2.4.4 級数展開   71 
    3.2.5 各種方程式の求解   71 
      3.2.5.1 代数方程式の求解   71 
      3.2.5.2 微分方程式の求解   72 
      3.2.5.3 階差方程式の求解(差分方程式,漸化式)   72 
    3.2.6 線形代数   73 
    3.2.7 総和   74 
    3.2.8 数値近似   75 
    3.2.9 書式の変換出力   75 
      3.2.9.1 LaTeX    75 
    3.2.10 グラフのプロット   75 
4 セキュリティ関連   77 
  4.1 hashlib   77 
    4.1.1 基本的な使用方法   77 
5 プログラムの高速化   78 
  5.1 Cython   78 
    5.1.1 使用例   78 
    5.1.2 高速化のための調整   80 
  5.2 Numba   81 
    5.2.1 基本的な使用方法   81 
    5.2.2 型指定による高速化   82 
  5.3 ctypes   82 
    5.3.1 C言語による共有ライブラリ作成の例   83 
    5.3.2 共有ライブラリ内の関数を呼び出す例   83 
    5.3.3 引数と戻り値の扱いについて   84 
      5.3.3.1 配列データの受け渡し   86 
6 対話作業環境(JupyterLab)   89 
  6.1 基礎事項   89 
    6.1.1 起動と終了   90 
    6.1.2 表示領域の構成と操作方法   90 
      6.1.2.1 ノートブックの使用例   91 
      6.1.2.2 カーネル(Kernel)について   93 
    6.1.3 Notebookでのinput関数の実行   93 
  6.2 Markdownによるコメント表示   94 
  6.3 使用例   95 
    6.3.1 MathJaxによるSymPyの式の整形表示   95 
    6.3.2 IPython.displayモジュールによるサウンドの再生   96 
7 その他   98 
  7.1 urllib:URLに関する処理   98 
    7.1.1 他バイト文字の扱い(`\%’エンコーディング)   98 
      7.1.1.1 文字コード系の指定   98 
  7.2 zenhan:全角⇔半角変換   99 
8 免責事項   100 
9 テキストの最新版と更新情報   100
—————————————————————————

コメントを残す

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

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