# Python Jupyter 在 Windows 與 VSCode 上安裝
有些人使用網頁版本的 Jupyter 執行或是 Google Colab,但是沒有語法提示,但是 VScode 本身有語法提示。
1. 安裝環境
2. 設定 VSCode
3. 設定語法提示
4. 其它(語法小技巧、numpy 練習)
### 先安裝想要的 Python 版本
- [Python org](https://www.python.org/downloads/windows/)
- [Windows Store](https://www.microsoft.com/store/productId/9PJPW5LDXLZ5)
### 使用虛擬環境
使用其中一個即可
- [安裝並使用 Conda 建立虛擬環境](https://medium.com/python4u/%E7%94%A8conda%E5%BB%BA%E7%AB%8B%E5%8F%8A%E7%AE%A1%E7%90%86python%E8%99%9B%E6%93%AC%E7%92%B0%E5%A2%83-b61fd2a76566)
- [使用 virtualenv 建立虛擬環境](https://ithelp.ithome.com.tw/articles/10199980)
### 安裝 Jupyter
參考 [Installing the IPython kernel: Kernels for different environments](https://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments)
1. 進入虛擬環境
```
source activate $NAME$
```
2. 使用指令安裝 ```ipykernel```
```
conda install pip
conda install ipykernel # or pip install ipykernel
```
3. 將該 ```ipykernel``` 加入列表中
```
source activate $NAME$
python -m ipykernel install --user --name $NAME$ --display-name "Python ($NAME$)"
```
### 安裝 VSCode
- [VSCode 官方網站](https://code.visualstudio.com/)
- [Jupyter Notebooks in VS Code](https://code.visualstudio.com/docs/datascience/jupyter-notebooks)
1. 開始之前,先將 Python Jupyter 套件安裝至虛擬環境中,使用 ```conda install jupyter``` 或是 ```pip install jupyter```。
若忘記此步驟,VSCode 在開啟 ```.ipynb``` 檔案並選好 kernel 後會詢問你是否要安裝。
2. 開啟任意的 ```.ipynb``` 檔案,如果是第一次跑,可以依照提示安裝 VSCode 額外套件 Jupyter Extension Pack,或是自行在 Extension Marketplace (通常是左邊 Menu 選項第五個或 ctrl + shift + X) 搜尋並安裝
3. 可選右上角 **Select Kernel** 選擇其它 Kernel,這裡因為有把指定的虛擬環境加入至列表中,就會顯示對應的 kernel name.

### 設定語法提示
事實上語法提示不是 Juptyer 跟 VSCode 提供的功能,是由 VSCode 的 Python Extension 提供
1. 在 Extensions(ctrl + shift + X) 中找到 Python Extension 套件,點選齒輪,選擇 Extesnion Settings 開始設定。
2. 設定 ```Python: Default Interpreter Path``` 選項,例如修改成 ```C:\Users\$USERNAME$\$NAME$\Scripts\python```
3. 重新開啟 VSCode,測試是否有正確語法提示。使用 numpy 部分函式會出現提示。
4. **(非強制)**
設定 Pylance Extension,一樣點選該 Extension Setting 勾選兩個選項,就會在自動在每個變數跟函示前面提示型態。
- ```Python › Analysis › Inlay Hints: Function Return Types```
- ```Python › Analysis › Inlay Hints: Variable Types```
### 其它
#### 語法小技巧
在撰寫 Python 程式碼中,很多時候會遇到 ```Any``` 型態,會使得以上語法提示功能失效。
幾個小技巧,在 function 定義中建議參數與回傳值的型態,例如
```python
import numpy as np
def foo(sim: np.ndarray):
return np.ndarray(sim.shape)
()
def foo2() -> np.ndarray:
return np.zeros(5)
```
#### numpy 練習
numpy 教學可參考 [CS231n Module 0](https://cs231n.github.io/)