機械学習
 WebAP
 仮想環境の起動
 仮想環境の作成
 パッケージ管理
 Pip と Conda
 仮想環境
 環境
 パッケージ
 モジュール
 ライブラリ
 例外処理
 ポリモフィズム
 オーバーライド
 多重継承
 派生クラス
 継承
 カプセル化
 self
 メンバアクセス
 クラス
 スコープ
 名前空間
 関数
 内包表記
 制御文
 置換
 検索
 演算子
 型変換
 データ型
 変数の不定値
 定数
 変数の型
 文字コード
 開発スタイル

 機能・要件
 タスク
 ライブラリ
 導入
 Sample
 Error
 基礎他

 機械学習
 ・

 Webアプリケーション
 ・

 仮想環境の起動
 ・

 仮想環境の作成
 ・

 パッケージ管理
 ・標準では入っていないパッケージを追加して使うことができる。
 ・新たにパッケージをインストールするいくつかの方法
ソースコードをダウンロードし自らのプロジェクトにコピーする。
Pip や Condaを使いインストールする。
 ・パッケージリスト

 Pip と Conda
 ・どちらもパッケージをインストールするコマンド
パッケージの取得元も、インストールする方法も異なる。
 ・仮想環境の作り方も公式版PythonとAnacondaでは異なる。
公式版Pythonでは、標準モジュールの venv を利用
Conda コマンドでは、複数のConda環境を作成して、切り替えて利用
 ・PyPI (The Python Package Index)
Pythonの開発元が運営する、Pythonの配布サービス(Python専用)
依存関係のあるパッケージの導入が容易
Githubなどに公開のPython用パッケージも登録できる。
pip コマンドを用いてインストール
pip install パッケージ名
 ・Anacondaはパッケージを Anaconda Cloud の独自のリポジトリで公開
condaコマンドを用いてインストールする。
PyPIで公開のソフトウェアも一部入っている。

 仮想環境
 ・プロジェクトごとに「仮想環境」という、独立した実行環境を作成するのが一般的
仮想環境とは環境に関する概念的なことば
1つのPCの中に複数の環境を用意
 ・開発などで、用途に応じて専用の実行環境を作成し、切り替えて使用する。
ある環境を使うときにPCにはその1つの環境しかないように思わせる。
 ・公式版PythonとAnacondaでは仮想環境の作り方が異なる
公式版Pythonはvenv使って作成( LinuxWindows
Anacondaは conda コマンド使って作成( LinuxWindows
 ・仮想環境を作るという意味
OS全体に影響する所に各種ライブラリをインストールしない。
pip でインストールするものは特定のディレクトリに収める。
 ・安易に pip を使わない。  (仮想環境(venv)の中で pip をインストール)
警告:「root」ユーザーとしてpipを実行すると、権限が破損し、
システムパッケージマネージャーとの動作が競合する可能性があります。
代わりに仮想環境を使用することをお勧めします。
https://docs.python.org/3/tutorial/venv.html
 ・デフォルトの環境(Python本体とライブラリ)とは別に環境を作る。
仮想環境ディレクトリはユーザーディレクトリの中に入れる。
仮想環境ディレクトリとプロジェクトディレクトリは、分ける
(同じ仮想環境を使って複数のプロジェクトを作成)
 ・「Python 3.6 + Django 2.0 」 と 「Python 3.6 + Django 3.2」 など
複数のバージョンのPythonを使用できる。
モジュールの入れ替えや追加が可能になる。
同じモジュール内でバージョンの使い分けが可能
作成、削除が簡単
 ・Djang を使用した場合の仮想環境のディレクトリ構成

 環境
 ・pythonのバージョン、インストールされているライブラリの種類、
  ライブラリのバージョンなどの状態をまとめた言い方

 パッケージ (モジュールを分類するための仕組み)
 ・パッケージを用いて複数のモジュールをグループに纏めて扱える。
 ・パッケージはファイルシステムのように階層化して扱う。
 ・パッケージ作成
パッケージ毎にディレクトリを作る。
パッケージ名は、パッケージのディレクトリ名
そのディレクトリに __init__.py ファイルを作る。(空でもよい)
パッケージとして動作させるためのファイル
 ・パッケージのモジュールをimportする
パッケージ名とモジュール名を指定してパッケージのモジュールをインポート
import パッケージ名.モジュール名
from パッケージ名 import モジュール名

 モジュール
 ・それ自体がPythonプログラムとして動作するソースファイル
 ・プログラムは複数のモジュールを連動させて動作させることができる。
 ・ソースファイルを複数のモジュールに分割しプログラムの再利用を行う。
関数の定義箇所だけ別モジュールにしておくなど
 ・import 文を使ったモジュールの取り込み
importで取り込むモジュールはモジュールのファイル名を指定
import モジュールファイル名  (拡張子は不要)
モジュールに束縛されている識別名が別の場所でも使えるようになる。
モジュールがさらに他のモジュールをimportすることもできる。
 ・from を使ったモジュールの取り込み
モジュール全体ではなく一部だけを import できる。
from モジュール名 import 関数名[, 関数名] [,...]
取り込んだモジュールの関数を使用する場合、モジュール名は不要
 ・別名によるモジュールのインポート
as を使いモジュールをインポートすると識別名に別名をつけることができる。
import モジュール名 as 別名
from モジュール名 import 関数名 as 別名
取り込んだモジュールの関数を使用するときは、別名を使用できる。
別名.関数名()  (モジュールに別名を付けた場合)
別名()  (関数名に別名を付けた場合)
 ・モジュール
数学モジュール
ファイル操作
日時を操作
 ・よく使うモジュール

 ライブラリ
 ・ライブラリパッケージモジュールクラス関数
 ・ライブラリ(パッケージをまとめて一つのライブラリ)
 ・標準ライブラリ
Pythonは標準ライブラリとしてオブジェクトやモジュールを同梱
標準ライブラリをインポートすることで便利な機能を利用できる。
参考
 ・外部ライブラリ(追加インストール)

 例外処理
 ・異常(例外)が発生した場合に現在の処理を中断して別の処理を行う。
例外発生で生成した例外オブジェクトを捕捉しそれに対応する処理を行う。
 ・try文による例外処理
 ・複数のexcept
exceptは派生クラスから順に記述する。
 ・try文のelseとfinally節
 ・複数例外の指定
 ・例外を発生させる。
 ・ユーザ定義例外

 ポリモフィズム
 ・異なる振舞いを持つオブジェクトを同一の操作で扱うことができること
 ・操作している側はオブジェクトの振舞いの違いを意識せずに操作を利用できる。
多態性、多様性、多相性とも言う。

 オーバーライド
 ・基底クラスで定義されたメソッドを派生クラスで再定義
 ・オーバーライドする場合の条件
派生クラスで基底クラスのメソッドと同じメソッド名で再定義

 多重継承
 ・複数の基底クラスをもつクラスを定義
 ・多重継承するにはクラス定義の括弧内に複数の基底クラスを指定して定義
 ・基底クラスに同じメンバがある場合は左に指定したクラスのほうが優先

 派生クラス
 ・派生クラスの定義

 継承 (inheritance)
 ・既に定義されているクラスを基に拡張や変更を加えた新しいクラスを定義
 ・継承の元になるクラスを基底クラス(スーパークラス、親クラス)
 ・新たに定義されたクラスを派生クラス(サブクラス、子クラス)

 カプセル化
 ・オブジェクト内のインスタンス変数やメソッドを外からアクセスできないように隠蔽
外部からアクセスできない状態をプライベート
プライベートなインスタンス変数をプライベート変数と呼ぶ。
プライベートなメソッドをプライベートメソッドと呼ぶ。
 ・メンバをプライベートにするにはメンバ名の先頭に「__」を付けて命名
 ・アクセスできないメンバにアクセスしたときのエラー
AttributeError:・・・

 selfによるメンバアクセス
 ・メソッドの第1引数はインスタンス自身が引数として渡される。
 ・selfは引数を受け取る変数
selfは「このインスタンス」という意味
変数名は慣習としてselfを使う。
 ・インスタンス自身が持つメンバにインスタンス内からアクセスするのにselfを使用
 ・メソッドからインスタンス変数へのアクセス
self.インスタンス変数名
 ・メソッドから他のメソッドへのアクセス
self.メソッド名()

 「.」演算子を使ったインスタンスメンバへのアクセス
 ・インスタンス化した変数を用いて、メソッドやインスタンス変数(メンバ)を利用
 ・メンバを指定するときは「.」演算子を用いる。
 ・インスタンス変数へのアクセス
生成したインスタンスの変数名.インスタンス変数名
 ・メソッドから他のメソッドへのアクセス
生成したインスタンスの変数名.メソッド名()
 ・変数への代入 (戻り値を変数に代入)
変数= 生成したインスタンスの変数名.インスタンス変数名
変数= 生成したインスタンスの変数名.メソッド名()
 ・整数型や文字列型、リスト型などもクラス
 ・「.」演算子を使ったクラス変数へのアクセス
クラス名を用いて、クラス変数を利用
クラス変数を指定するときは「.」演算子を用いる。

 クラス
インスタンス
 ・クラスの定義
 ・メソッドの定義
 ・メソッドのタイプ
特殊メソッド
 ・インスタンス変数の定義
 ・クラス変数の定義
 ・インスタンスの生成

 スコープ (変数にアクセスできるプログラムの範囲)
 ・プログラムのメイン部分で定義された変数はグローバル変数
グローバル変数はメイン部分で使用できる。
グローバル変数を関数部分で使用するにはglobalキーワードを使用する。
 ・プログラムの関数部分で定義された変数はローカル変数
ローカル変数は定義したその関数内でのみ使用できる。
ローカル変数は関数の処理が終了したら消えてなくなる。
 ・同名変数がある場合、狭いスコープが優先
 ・for、while にスコープがない。(ブロックスコープがない。)     >>> for i in range(1, 100):     ... pass     ...     >>> print(i)     99     
 名前空間 (namespace)
 ・特定の名前の意味が一意に決まり、他の名前空間の同じ名前とは無関係な領域

 関数 (function)
 ・関数利用
組み込み関数以外は事前にimport文で読み込んで使用
 ・関数定義
 ・関数の引数
 ・関数の戻り値
 ・戻り値の受取り
 ・デフォルト引数
 ・キーワード引数

 内包表記
 ・複雑なリストなどを簡潔な記述で生成できる。
 ・forを使ったリスト内包表記
 ・複数のforを使ったリスト内包表記
多次元リストを生成できる。
 ・if句を使ったリスト内包表記
 ・集合内包表記
 ・辞書内包表記
 ・ジェネレータ内包表記

 制御文
 ・構造化プログラミングにおける「選択」「反復」の実現法
 ・選択(条件分岐)
 ・反復(繰り返し)
while文:反復の開始時に条件判定を行う。
for文:反復制御用変数によって反復する。
 ・break、continue
break :反復系制御文の外へ移動
continue :反復系制御文の条件判定部へ移動

 置換
 ・replaceメソッド
引数で指定した文字列を置換
string.replace("Hello", "Hey!!")
 ・translateメソッド
文字(長さが1の文字列)を指定して置換
 ・re.sub
正規表現を用い、部分一致で元の文字列を指定

 検索
 ・in 演算子
特定の文字列を含むか判定
'Sam' in s
s に Sam が含まれていると True、含まれていないと False
リスト、タプル、辞書に対しても使える。
== と同様に値として等しいかどうかで判定
型が違っていても値が等しければ True
 ・find()、 rfind()
特定の文字列の位置を取得

 演算子 (様々な演算処理を行う記号)
 ・1 + 2 の演算の場合、「+」を演算子、「1」や「2」を被演算子
 ・算術演算子
四則演算を行う演算子
算術演算
 ・累積代入文
ある変数に演算をし、その変数自身に代入する処理で累積代入文を利用
 ・比較演算子
 ・ブール演算子
ブール値に関する演算
例、 (a > 1) and (b < 10)
 ・演算子の優先順位

 型変換 (キャスト)
 ・値を異なるデータ型に変換すること
 ・特定のデータ型へ型変換するには、目的の 型変換関数 を使用
 ・strにキャスト(例)
>>> a=1
>>> str(a) + '番目'
'1番目'
 ・type()を使用してデータ型を取得する。(例)
>>> b=1.23
>>> type(b)
<class 'float'>

 データ型
 ・代表的なデータ型
整数型
ブール型
浮動小数点型
文字列型
リスト型
タプル型
辞書型
集合型

 変数の不定値
 ・値が代入されていない変数を使おうとするとエラー、初期化が必用

 定数
 ・定数を大文字英字とアンダースコア(_)だけで命名する慣習がある。

 変数の型
 ・Pythonは動的型付け言語
 ・プログラム実行前に予め決めず、実行時に決定
変数を使用する前に変数を宣言する必要はない。
変数を使う前に変数の型を決める必要もない。

 文字コード
 ・Unicode

 開発スタイル
 ・マルチパラダイム
手続き型、オブジェクト指向のどちらの開発スタイルにも対応
 ・参考