![](../../img/interpret.jpg)
Python 簡易手冊
單元 8 - 變數、識別字與縮排
程式中常常會用變數 (variable) 來處理資料,變數命名通常會用有意義的英文單字或有意義的英文單字組合,例如
| number = 10 |
之所以要用有意義的英文單字,主要原因是方便閱讀及理解,相對也更好維護。 Python 3 之後直接支援 Unicode ,所以程式中也可以用 Unicode 符號命令變數,例如中文
| 數字 = 10 |
雖然可以用其他語言命名變數,但還是建議只使用英文二十六個大、小寫字母、阿拉伯數字及底線
_ | |||||
a | b | c | d | e | f |
g | h | i | j | k | l |
m | n | o | p | q | r |
s | t | u | v | w | x |
y | z | ||||
A | B | C | D | E | F |
G | H | I | J | K | L |
M | N | O | P | Q | R |
S | T | U | V | W | X |
Y | Z | ||||
0 | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 |
但是要注意避免單獨使用小寫英文字母 l 、大寫英文字母 I ,因為這兩個字母在某些字型容易跟數字 1 混淆,同樣英文字母 O 或 o 在某些字型也容易跟數字 0 混淆,所以命名上要盡可能語意清楚。
以下是 Python 官方發佈的改進文件 PEP 8 推薦的形式
b B lowercase lower_case_with_underscores UPPERCASE UPPER_CASE_WITH_UNDERSCORES CapitalizedWords mixedCase |
另外避免以下形式
| Capitalized_Words_With_Underscores
|
只使用這些符號的主要原因是 Python 社群發展已久的標準程式庫 (standard library) 或大量第三方程式庫 (third-party library) ,幾乎都是以英文來替變數命名,變數也是識別字 (identifier) 的一種,事實上,社群中絕大多數的識別字都都是以英文命名,需要自行命名的識別字包括
- 套件 (package)
- 模組 (module)
- 函數 (function)
- 類別 (class)
- 方法 (method)
- 參數 (parameter)
- 變數
- 常數 (constant)
大致上命名分成三大類來看,首先第一類是小寫英文字母或用底線連接的小寫英文字母組合,這些適用在套件、模組、全域變數 (global variable) 、變數、函數、方法及參數,例如
| module_name
|
第二類是類別名稱,採用大寫駝峰型 (upper camel case) ,這是每個英文單字的第一個字母大寫,然後不用底線直接連結,例如
| ClassName
|
第三類是常數,採用單一個全大寫英文字母單字,或用底線連接的全大寫英文字母單字單字,例如
| CONSTANT_NAME
|
然後要注意不能用關鍵字 (keyword) 與運算子 (operator) 命名識別字,識別字也不能以數字開頭,因為數字直接被當成數字的字面常數 (literal) 處理,如下程式
1 2 3 4 5 6 7 8 9 10 11 | # 命名錯誤的變數 1a = 10 # 印出命名錯誤的變數 print(1a) # 檔名: wrong_demo.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 4 月 |
執行的話,直譯器 (interpreter) 會直接報錯
> python wrong_demo.py |
File "wrong_demo.py", line 2 1a = 10 ^ SyntaxError: invalid decimal literal |
> |
Python 程式碼也需要有一致的縮排 (indentation) 層級,通常是在定義或控制結構之中需要縮排,不然直譯器也會報錯,後續單元的範例會示範縮排方式。
縮排的格數在 PEP 8 建議是 4 格,這方面可自訂,大部分採 2 到 5 格,本書按慣例採 4 格。
參考資料
- https://docs.python.org/3/reference/lexical_analysis.html#identifiers
- https://peps.python.org/pep-0008/
![](../../img/pydoing.gif)