# 第一個 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` 可以退出解釋器

#### 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 快速體驗

* **文件導航區域** 能夠 **瀏覽**/**定位**/**打開** 項目文件
* **文件編輯區域** 能夠 **編輯** 當前打開的文件
* **控制臺區域** 能夠:
* 輸出程序執行內容
* 跟蹤調試代碼的執行
* 右上角的 **工具欄** 能夠 **執行(SHIFT + F10)** / **調試(SHIFT + F9)** 代碼

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

- linux基礎
- 01_Python基礎課程安排
- 02_操作系統(科普章節)
- 03_操作系統的發展史(科普章節)
- 04_文件和目錄(理解)
- 05_Ubuntu圖形界面入門
- 06_常用Linux命令的基本使用
- 07_Linux終端命令格式
- 08_文件和目錄常用命令
- 09_遠程管理常用命令
- 10_用戶權限相關命令
- 11_系統信息相關命令
- 12_其他命令
- python基礎
- 01_認識 Python
- 02_第一個Python 程序
- 03_PyCharm的初始設置(知道)
- 04_多文件項目的演練
- 05_注釋
- 06_算數運算符
- 07_程序執行原理(科普)
- 08_變量的基本使用
- 09_變量的命名
- 10_判斷(if)語句
- 11_運算符
- 12_循環
- 13_函數基礎
- 14_高級變量類型
- 15_綜合應用——名片管理系統
- 16_變量進階(理解)
- 17_函數進階.md
- 面向對象
- 01_面向對象(OOP)基本概念
- 02_類和對象
- 03_面向對象基礎語法
- 04_面向對象封裝案例
- 05_面向對象封裝案例 II