1. 程式人生 > ># 第一個 Python 程式

# 第一個 Python 程式

# 第一個 Python 程式

## 目標

* 第一個 `HelloPython` 程式
* `Python 2.x` 與 `3​​.x` 版本簡介
* 執行 `Python` 程式的三種方式
    * 直譯器 —— `python` / `python3`
    * 互動式 —— `ipython`
    * 整合開發環境 —— `PyCharm`

## 01. 第一個 `HelloPython` 程式

### 1.1 Python 源程式的基本概念

1. Python 源程式就是**一個特殊格式的文字檔案**,可以**使用任意文字編輯軟體**做 `Python` 的開發
2. Python 程式的 **副檔名** 通常都是 `.py`

### 1.2 演練步驟

* 在桌面下,新建 `認識Python` 目錄
* 在 `認識Python` 目錄下新建 `01-HelloPython.py` 檔案
* 使用 **gedit** 編輯 `01-HelloPython.py` 並且輸入以下內容:

```python
print("hello python")
print("hello world")
```

* 在終端中輸入以下命令執行 `01-HelloPython.py`

```bash
$ python 01-HelloPython.py
```

> `print` 是 `python` 中我們學習的第一個 **函式**

> `print` 函式的作用,可以把 **""** 內部的內容,輸出到螢幕上

### 1.3 演練擴充套件 —— 認識錯誤(BUG)

#### 關於錯誤

* 編寫的程式**不能正常執行**,或者**執行的結果不是我們期望的**
* 俗稱 `BUG`,是程式設計師在開發時非常常見的,初學者常見錯誤的原因包括:
    1. 手誤
    2. 對已經學習過的知識理解還存在不足
    3. 對語言還有需要學習和提升的內容
* 在學習語言時,不僅要**學會語言的語法**,而且還要**學會如何認識錯誤和解決錯誤的方法**

> 每一個程式設計師都是在不斷地修改錯誤中成長的

#### 第一個演練中的常見錯誤

* 1> **手誤**,例如使用 `pirnt("Hello world")` 

```
NameError: name 'pirnt' is not defined

名稱錯誤:'pirnt' 名字沒有定義
```

* 2> 將多條 `print` 寫在一行

```
SyntaxError: invalid syntax

語法錯誤:語法無效
```

> 每行程式碼負責完成一個動作

* 3> 縮排錯誤

```
IndentationError: unexpected indent

縮排錯誤:不期望出現的縮排
```

> * Python 是一個格式非常嚴格的程式設計語言
> * 目前而言,大家記住每行程式碼前面都不要增加空格

* 4> **python 2.x 預設不支援中文** 

目前市場上有兩個 Python 的版本並存著,分別是 `Python 2.x` 和 `Python 3.x`

* **Python 2.x 預設不支援中文**,具體原因,等到介紹 **字元編碼** 時給大家講解
* Python 2.x 的直譯器名稱是 **python**
* Python 3.x 的直譯器名稱是 **python3**

```
SyntaxError: Non-ASCII character '\xe4' in file 01-HelloPython.py on line 3, 
but no encoding declared; 
see http://python.org/dev/peps/pep-0263/ for details

語法錯誤: 在 01-HelloPython.py 中第 3 行出現了非 ASCII 字元 '\xe4',但是沒有宣告檔案編碼
請訪問 http://python.org/dev/peps/pep-0263/ 瞭解詳細資訊
```

> * `ASCII` 字元只包含 `256` 個字元,不支援中文
> * 有關字元編碼的問題,後續會講

#### 單詞列表

```
* error 錯誤
* name 名字
* defined 已經定義
* syntax 語法
* invalid 無效
* Indentation 索引
* unexpected 意外的,不期望的
* character 字元
* line 行
* encoding 編碼
* declared 宣告
* details 細節,詳細資訊
* ASCII 一種字元編碼
```

## 02. `Python 2.x` 與 `3​​.x` 版本簡介

目前市場上有兩個 Python 的版本並存著,分別是 `Python 2.x` 和 `Python 3.x`

> 新的 Python 程式建議使用 `Python 3.0` 版本的語法

* Python 2.x 是 **過去的版本**
    * 直譯器名稱是 **python**
* Python 3.x 是 **現在和未來 主流的版本**
    * 直譯器名稱是 **python3**
    * 相對於 `Python` 的早期版本,這是一個 **較大的升級**
    * 為了不帶入過多的累贅,`Python 3.0` 在設計的時候 **沒有考慮向下相容**
        * 許多早期 `Python` 版本設計的程式都無法在 `Python 3.0` 上正常執行
    * Python 3.0 釋出於 **2008 年**
    * 到目前為止,Python 3.0 的穩定版本已經有很多年了
        * Python 3.3 釋出於 2012
        * Python 3.4 釋出於 2014
        * Python 3.5 釋出於 2015
        * Python 3.6 釋出於 2016
* 為了照顧現有的程式,官方提供了一個過渡版本 —— **Python 2.6**
    * 基本使用了 `Python 2.x` 的語法和庫
    * 同時考慮了向 `Python 3.0` 的遷移,**允許使用部分** `Python 3.0` 的語法與函式
    * 2010 年中推出的 `Python 2.7` 被確定為 **最後一個Python 2.x 版本**

> 提示:如果開發時,無法立即使用 Python 3.0(還有極少的第三方庫不支援 3.0 的語法),建議

> * 先使用 `Python 3.0` 版本進行開發
> * 然後使用 `Python 2.6`、`Python 2.7` 來執行,並且做一些相容性的處理

## 03. 執行 Python 程式的三種方式

### 3.1. 直譯器 `python` / `python3`

#### Python 的直譯器

```bash
# 使用 python 2.x 直譯器
$ python xxx.py

# 使用 python 3.x 直譯器
$ python3 xxx.py
```

##### 其他直譯器(知道)

**Python 的直譯器** 如今有多個語言的實現,包括:

* `CPython` —— 官方版本的 C 語言實現
* `Jython` —— 可以執行在 Java 平臺
* `IronPython` —— 可以執行在 .NET 和 Mono 平臺
* `PyPy` —— Python 實現的,支援 JIT 即時編譯

### 3.2. 互動式執行 Python 程式

* 直接在終端中執行直譯器,而不輸入要執行的檔名
* 在 Python 的 `Shell` 中直接輸入 **Python 的程式碼**,會立即看到程式執行結果

#### 1) 互動式執行 Python 的優缺點

##### 優點
* 適合於學習/驗證 Python 語法或者區域性程式碼

##### 缺點
* 程式碼不能儲存
* 不適合執行太大的程式

#### 2) 退出 官方的直譯器

##### 1> 直接輸入 `exit()`

```python
>>> exit()
```

##### 2> 使用熱鍵退出

在 python 直譯器中,按熱鍵 `ctrl + d` 可以退出直譯器

![001_積跬步以至千里](media/14950456888393/001_%E7%A7%AF%E8%B7%AC%E6%AD%A5%E4%BB%A5%E8%87%B3%E5%8D%83%E9%87%8C.jpg)

#### 3) IPython

* IPython 中 的 “I” 代表 **互動 interactive**

##### 特點

* IPython 是一個 python 的 **互動式 shell**,比預設的 `python shell` 好用得多
    * 支援自動補全
    * 自動縮排
    * 支援 `bash shell` 命令
    * 內建了許多很有用的功能和函式
* IPython 是基於 BSD 開源的

##### 版本

* Python 2.x 使用的直譯器是 **ipython**
* Python 3.x 使用的直譯器是 **ipython3**

* 要退出直譯器可以有以下兩種方式:

##### 1> 直接輸入 `exit`

```python
In [1]: exit
```

##### 2> 使用熱鍵退出

在 IPython 直譯器中,按熱鍵 `ctrl + d`,`IPython` 會詢問是否退出直譯器

#### IPython 的安裝

```bash
$ sudo apt install ipython
```

## 3.3. Python 的 IDE —— `PyCharm`

### 1) 整合開發環境(IDE)

整合開發環境(`IDE`,Integrated Development Environment)—— **集成了開發軟體需要的所有工具**,一般包括以下工具:

* 圖形使用者介面
* 程式碼編輯器(支援 **程式碼補全**/**自動縮排**)
* 編譯器/直譯器
* 偵錯程式(**斷點**/**單步執行**)
* ……

### 2)PyCharm 介紹

* `PyCharm` 是 Python 的一款非常優秀的整合開發環境
* `PyCharm` 除了具有一般 IDE 所必備功能外,還可以在 `Windows`、`Linux`、`macOS` 下使用
* `PyCharm` 適合開發大型專案
    * 一個專案通常會包含 **很多原始檔**
    * 每個 **原始檔** 的程式碼行數是有限的,通常在幾百行之內
    * 每個 **原始檔** 各司其職,共同完成複雜的業務功能

### 3)PyCharm 快速體驗

![001_PyCharm的介面結構](media/14950456888393/001_PyCharm%E7%9A%84%E7%95%8C%E9%9D%A2%E7%BB%93%E6%9E%84.png)

* **檔案導航區域** 能夠 **瀏覽**/**定位**/**開啟** 專案檔案
* **檔案編輯區域** 能夠 **編輯** 當前開啟的檔案
* **控制檯區域** 能夠:
    * 輸出程式執行內容
    * 跟蹤除錯程式碼的執行
* 右上角的 **工具欄** 能夠 **執行(SHIFT + F10)** / **除錯(SHIFT + F9)** 程式碼

![002_PyCharm執行工具欄](media/14950456888393/002_PyCharm%E8%BF%90%E8%A1%8C%E5%B7%A5%E5%85%B7%E6%A0%8F.png)

* 通過控制檯上方的**單步執行按鈕(F8)**,可以單步執行程式碼

![003_PyCharm偵錯程式](media/14950456888393/003_PyCharm%E8%B0%83%E8%AF%95%E5%99%A8.png)