Python基礎

# 環境準備
## 1.Pythonのインストール
### 手段1 Pythonの公式サイトからインストール
　　　1. [公式HP](https://www.python.org/) にアクセスしてダウンロード
　　　　　　[Downloads]-[Windows]-[Windows installer (64-bit)]
　　　2.インストールする。その際、「Add Python 3.7 to PATH」にチェックを入れるてPATHを通す
　　　　　`C:\Users\ユーザー名\AppData\Local\Programs\Python\Python311\`にインストールされる。
　　　3.コマンドプロンプトで`python -V`または`python --version`と入れてインストールされたバージョン確認。
### 手段2 Anacondaをインストール

## 2.仮想環境の作成(必要な場合のみ)
### Anacondaを使わない場合(編集中)
1.仮想環境を作りたい場所へ移動`cd xxx\yyy\zzz`
2.フォルダ名(例.env)を指定して、仮想環境を生成する。`python -m venv env`
　※この例だと、`xxx\yyy\zzz\env`配下に仮想環境が作成される。
3.スクリプトを使用出来るように、以下コマンドを入力
　　`Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process`
4.生成した仮想環境をアクティベート
　　Windows`env\Scripts\activate`　　※文頭に`python`の表記は不要。
　　Mac`source env/bin/activate`

(削除したい場合)
　venvで作成された仮想環境のフォルダを消すだけ。
### Anacondaを使う場合
1.[Environments]-[root]-[Create]
2.フォルダ名(例.env)入力し、[Create]

## 3.[Python標準ライブラリ](https://docs.python.org/ja/3/library/index.html)
　インストール不要。インクルードすれば利用可能。

| ライブラリ | インクルード | 備考 |
| ------------- | ------------- | ------------- |
| [os](https://docs.python.org/ja/3/library/os.html) |  `import os` | OSインターフェース。ファイルを扱ったり。  |
| [glob](https://docs.python.org/ja/3/library/glob.html) | `import glob` | パスを扱ったり。|

## 4.Pythonの拡張機能(ライブラリ)
### 利用方法
　　1.コマンドプロンプトにて`pip install openpyxl`と入力してエンターキーを押す。
　　2.以下にインストールされる。
　　　標準：`c:\users\ユーザー名\appdata\local\programs\python\python311\lib\site-packages`
　　　仮想環境アクティベート中：`仮想環境パス/Lib/site-packages/`
　　※対話モード(コマンドプロンプトの行の最初に">>>"と表示される)の場合は、上記コマンド入力不可なので注意。
　　3.ファイル先頭で、下図「インクルード」の通り、宣言する事で利用出来る。
### インストールされているライブラリを確認する。
　1. 確認したい環境をアクティベート
　　コマンドプロンプトで`env\Scripts\activate`と入力してエンター。
　2. コマンドプロンプトで`pip list`と入力してエンター。
### 同様に以下コマンドで様々なライブラリをインストール出来る
| ライブラリ | コマンド | インクルード | 備考 |
| ------------- | ------------- | ------------- | ------------- |
| [tensorflow](https://www.tensorflow.org/?hl=ja) | `pip install tensorflow` | `import tensorflow` | Googleが開発した機械学習のソフトウェアライブラリ |
| FlickrAPI | `pip install flickrapi` | `from flickrapi import FlickrAPI` | 画像集ダウンロード |
| [PIL](https://python-pillow.org/) | `pip install pillow` | `from PIL import Image` | Python Image LibraryからImageを読み込み |
| [NumPy](https://numpy.org/) | `pip install numpy` | `import numpy as np` | Pythonで数値計算を効率的に行う為のライブラリ。左記宣言をすれば、npとしてNumPyを扱える。 |
| [scikit-learn](https://scikit-learn.org/stable/index.html) | `pip install sklearn` `pip install scikit-learn`| `from sklearn import model_selection` | データをトレーニング用とテスト用に分割したり。※Anacondaを使わない場合は、事前に「NumPy」「Scipy」「Pandas」もインストールが必要 |
| [Keras](https://keras.io) | `pip install keras` | `import keras | TensorFlowやTheano上で動くニューラルネットワークライブラリ |
| [Flask](https://flask.palletsprojects.com/en/2.2.x/) | `pip install Flask` | `from flask import Flask, reqpuest, redirect, url_for` | Python上で動くマイクロウェブアプリケーションフレームワーク |
| [TensorFlow](https://www.tensorflow.org/?hl=ja) | `pip install tensorflow==1.5.0 keras==2.1.6` | `import tensorflow` | トレーニング済みのモデルを使用したり、独自のモデルを構築してトレーニングしたり |
| [Core ML](https://pypi.org/project/coremltools/) | `pip install -U coremltools` | `import coremltools` | Appleが2017年に発表した機械学習を扱うためのフレームワーク |

# 文法
## リスト
・C言語の配列のようなもの
・添え字は0から。
## enumerate
・第二引数の記載を省略すると、取得出来る添え字は0から。
・第二引数の記載をすると、その指定したインデックスから1つずつインクリメントされて取得出来る。
~~~dif_python
>>> list(enumerate("abc"))
[(0, 'a'), (1, 'b'), (2, 'c')]
>>> list(enumerate("abc", 1))
[(1, 'a'), (2, 'b'), (3, 'c')]
>>> list(enumerate("abc", -2))
[(-2, 'a'), (-1, 'b'), (0, 'c')]
~~~

# 用語集
## アトリビュート
　クラス内に定義されたメソッド＋データの事。
## モジュール
　クラスや関数が定義された「.py」で書かれたファイルのこと。
　importで読み込める。
　使用する時は、基本的には`モジュール名.関数()`の形式だが、ファイル先頭で
　`from モジュール名 import A, B, ...`　※A, Bは「クラス」「関数」「変数」のいずれか
　と宣言しておく事で、モジュール内の指定したものだけを読み込め、本来は
　`モジュール名.関数()`の形式で利用するところ、モジュール名を省略して
　`関数()`の形式で利用出来るようになる。
## パッケージ
　モジュールを複数まとめたもの。
## ライブラリ
　パッケージを複数まとめて一つのライブラリとしてインストール出来るようにしたもの。
　ライブラリには、Pythonに付属していてすぐに使える標準ライブラリと、
　ダウンロードなど追加インストールをしてから利用する外部ライブラリがあります。
　標準ライブラリの「組み込み関数」は、インストールせずにそのまま使える。

### os:path
　現在Pythonが動作しているOSに適したパスモジュール
　posixpath：UNIXスタイルのパス用
　ntpath：Windwosパス用
### pathlib
　Python標準ライブラリの一つ。
　Lib/pathlib.pyに定義されている。Pathクラスがある。
　`from pathlib import Path`と書く事でPathクラスが利用出来る。
　[Python公式日本語HPの解説](https://docs.python.org/ja/3/library/pathlib.html)
## ライブラリ
### openpyxl 
　Excel 2010 xlsx/xlsm ファイルを読み書きするための Python ライブラリ
　[Python公式HPの解説](https://pypi.org/project/openpyxl/)

# リンク集
Python標準ライブラリ
　[日本語ドキュメント](https://docs.python.org/ja/3/library/index.html)
　[英語ドキュメント](https://docs.python.org/3.11/)
[pythonコードスタイルガイドライン](https://peps.python.org/pep-0008/)