---
# System prepended metadata

title: '[Python] 環境建置篇'

---

# [Python] 環境建置篇

## 前言

Python在最近幾年相當火紅，已好幾年獲選年度最受歡迎的程式語言。但是，Python究竟厲害在哪呢？Python在設計上，就與其他程式語言大不相同。其捨去了花括號`{}`、分號`;`等在其他語言相當常見的符號，並大量使用縮排(indentation)來規範語法。藉此，Python的語法變得十分簡潔，且順便達成了風格(programming style)統一。

Python是一個直譯語言，其可以利用直譯器(interpreter)對於`.py`檔案直接逐行解析並執行。如此，`.py`檔執行前後並不會產生額外的副檔案。不過，直譯的缺點是效率低落，而原因待會會用一些例子向您說明。

> `.py`為Python檔案的後綴。其編碼格式為`utf-8`，與一般文字檔案相同！所以`.py`檔案是可以用記事本(notepad)等軟體進行編輯的喔！

## 編譯還是直譯？

說到這邊，我們可以來比較一下編譯(compile)與直譯(interpret)的差異。

| | 編譯 compile | 直譯 interpret |
| :---: | :---: | :---: |
| 邏輯 | 將文字檔案**翻譯**成二進位檔案 | 直接執行文字檔案 |
| 結果 | 會產生一個`.exe`檔案並執行它 | 中途不會產生其他檔案 |
| 效率 | 非常高(執行`.exe`檔時不必再翻譯) | 非常低 |
| 特點 | 只要語法有錯 編譯時期就會被抓到 | 只會在執行到錯誤的行數時才會報錯 |
| 舉例 | c / c++ / rust / java | python / javascript |

電腦是binary的編碼格式，在硬體層是用高電位(1)與低電位(0)來儲存此資訊，而人類很明顯不是以1/0溝通。所以翻譯人類看得懂的格式給電腦看是非常重要的。編譯器與直譯器都有此功能。而差別可以用以下舉例說明。

小傑(非本人🤣)作為一個以中文為母語的人類，並不懂其他語言，但是小傑是一個數學天才，全世界的人都想問他數學問題。但是小傑發現，好多人寄來的數學問題都不是以中文敘述，~~所以小傑決定放棄他們(X)~~，所以小傑決定請一個翻譯專家進行對這些題目進行翻譯。

| 角色 role | 對照 reflection |
| :---: | :---: |
| 小傑 | 電腦 |
| 中文 | 二進位 |
| 其他語言 | 文字格式 |
| 翻譯專家 | 編譯器或是直譯器 |

翻譯員試了兩種方式

1. 整份翻譯完後重寫一份以中文為敘述的題目給小傑寫
2. 在小傑身旁逐行翻譯念給小傑，小傑一邊寫題目

| 1 | 2 |
| :---: | :---: |
| 編譯器 | 直譯器 |
| 會產生新檔案 | 不產生新檔案 |
| 寫題目的效率很高 | 寫題目的效率很低 |

這就是編譯器與直譯器的區別啦！

## 直譯語言的特徵

總得來說，直譯的特徵就是可以逐行執行，不用整份檔案先翻譯過一遍就可以直接執行了。
這個模式不就與powershell有點像嗎？
沒錯！powershell的指令也是逐行執行

開啟你的powershell，並打入`echo "Hello world"`，接著enter：
![](https://hackmd.io/_uploads/HkejawsI2.png)
指令就被完美的執行了！

powershell也不是只能一次一行輸入，我們可以使用`.ps1`檔案後綴創建powershell script檔案！
讓我們創建`test.ps1`檔案
![](https://hackmd.io/_uploads/BkOsAvoLn.png)

打入以下cmdlet
![](https://hackmd.io/_uploads/r1Ec0PoU2.png)

> `clear`表示清除目前終端機畫面
> `echo "<Message>"`表示在終端機印出東西
> 有興趣的話可以上網找找其他powershell指令
> [👉像是這個網站](https://ss64.com/ps/)

儲存，最後...執行它！(可以雙擊執行也可以在powershell裡面呼叫它)

以下筆者在powershell裡面執行`test.ps1`
![](https://hackmd.io/_uploads/H1tfk_oUh.png)
然後按下enter鍵...
![](https://hackmd.io/_uploads/rkMXydsIn.png)
就成功一次完成兩個指令了😏
這邊，`test.ps1`在運作上還是一行一行作執行，powershell一次讀取一行，並一次執行一行。

> powershell是windows上專屬的工具，在macOS與Linux等UNIX架構的軟體上面叫做bash

> `.ps1`為powershell的檔案後綴。bash的檔案後綴為`.sh`。

~~講那麼多，終於要重返Python了。~~ Python在安裝完後會給予你一個可以直接執行Python code的小視窗。
![](https://hackmd.io/_uploads/B1ceWdoIh.png)
我們是可以直接在裡面一次打一行，一行一行執行的！
![](https://hackmd.io/_uploads/rk-D-OsI3.png)

是不是很像powershell呢！
直譯語言大多數都會給予這種工具以用來快速執行一些小工作！
這也是直譯語言的特徵之一。

## 被耽誤很久的環境建置

### 編輯器

Python有相當多編輯器可以進行編輯。而[PyCharm](https://www.jetbrains.com/pycharm/download/#section=windows)就是其中之一，其是相當多人喜愛的一個Python IDLE(Intergraded Developement Learning Environment)，筆者也覺得其非常好用，也適合新手學習。

不過，筆者這邊會教大家安裝[visual studio code](https://code.visualstudio.com/)，其作為Microsoft近年來最成功的一個軟體，擁有相當廣大的社群，且vscode有相當多好用的extension，之後筆者會寫一篇文章來推薦給大家好用的extension。

至於怎麼下載，~~這是個秘密~~😎。
沒啦，到[這個網站](https://code.visualstudio.com/)，選擇相對應的系統下載安裝工具，然後一直按next就好！

vscode還有相當多的設定可以慢慢調整，期待筆者某一天會心血來潮寫一篇文章，再分享給大家😘。

### Python套件

有經驗的人可以直接到[Python官網](https://www.python.org/downloads/)選擇需要的版本。
筆者這邊帶大家安裝[Python 3.11.3](https://www.python.org/downloads/release/python-3113/)！

> Python的版本號與大多軟體的版本號採用一樣的命名規則。
> 
> `[major].[minor].[micro]`
> 
> `major`指的是主版本號，現今Python是以3為發展重心。
> Python 2並不是沒人使用，但是也不推薦初學者先去學習Python 2。
> `minor`指的是副版本號，目前8~12都是相當不錯的選擇。
> `micro`是修訂號，專門為修bug而生的版本號。
> 
> 舉例來說：
> `major`就像是手遊的大更新，從地圖、介面到遊戲機制
> `minor`就像手遊多了一個新活動、新角色，但是主體大致不變。
> `micro`就像是手遊修bug，微不足道但是十分重要。

首先，下載與自己電腦相對應的安裝檔。
![](https://hackmd.io/_uploads/rJ7Ric3I2.png)

接著打開下載完的安裝檔，基本上按幾個按鈕就可以了。

### 如何確認自己有沒有安裝成功？

vscode安裝完會直接多出一個應用程式出來，所以不太需要測試。
但是Python安裝會牽扯環境變數等等的東西，所以需要測試。

打開powershell(bash、cmd、terminal)，打上`python --version`。
若系統回應的不是紅字，那恭喜你，你的環境建置就成功了！😀

## 進階問題

以下這些問題是**當碰到時再去查系列**，若沒有這些需求可以跳過。

### 我該怎麼更新我的Python版本？

這邊的版本都是`micro`版本，`major`版本一般來說是被視作完全不同的程式語言看待！而`minor`版本將會是視作不同的安裝檔案！

直接到[官網](https://www.python.org/downloads/)選擇要的版本，**當作是第一次下載一樣直接下載、安裝**。
Python的installer有能力辨識出你是要從零開始安裝還是更新版本，所以，直接下載吧！😉

### 我的電腦有好多個Python版本，我要怎麼自由切換？

這邊的版本都是`minor`版本。

*for windows*
你可以到環境變數裡頭。(`win + s` > `搜尋環境變數(environment variable)`)
點選環境變數(Environment Variables)
![](https://hackmd.io/_uploads/rJnh-o283.png)

點選上面區塊的`Path`並按下編輯。
![](https://hackmd.io/_uploads/HkrDzonU3.png)

選擇你要的Python版本，分別點選相對應的兩個變數，按上移、下移來改變他們的相對位置。
你要的版本要擺在這些Python版本的相對最上面。
兩個變數要一起移動。
![](https://hackmd.io/_uploads/SkcGQs3U2.png)

最後，移駕到終端機，打上`python --version`，如果看到系統的Python版本已改變就大功告成了！😉