Python 簡易手冊
單元 10 - 底線
以下整理 Python 中底線的用法
- 識別字 (identifier) 命名
- 整數字面常數 (literal) 中分隔
- 互動環境
- match-case 陳述 (statement)
- 迴圈 (loop)
- 忽略的回傳值 (reutrn value)
- 類別 (class) 中內建的方法 (method)
- 封裝 (encapsulation)
識別字命名
底線很常用在識別字命名,例如以下用底線連接不同的英文單字
| my_variable = 0 |
用底線開頭命名的識別字是合乎語法規則的,如下
| _variable = 0 |
包括單獨以底線為識別字名稱,例如
| _ = 22 |
但是不建議用底線開頭命名的識別字或是單獨以底線為識別字名稱,這是因為底線在 Python 有不少如下面提到的特殊用法,避免在程式中造成混淆,所以除了連接英文單字外,請避免直接使用底線來命名。
整數字面常數中分隔
底線可以在整數字面常數替數字作分隔,例如以千為單位做分隔
| a = 100_000_000 |
或是以下以萬單位做分隔
| a = 1_0000_0000 |
實際上 Python 並沒有限制分隔的位數,因此可以依需求用底線分隔大整數。
單元 6 - 數字型態會詳細介紹數字型態。
互動環境
底線在互動環境預設為之前運算的結果,例如
這是說在互動環境中,凡是計算結果都會暫時儲存在底線之中,利用底線可以取得上一行運算是的計算結果。
match-case 陳述
match-case 陳述的最後預設選項是用底線代替,例如
s = 2 match s: case 0: print(0) case 1: print(1) case _: print(-1) |
以上由於變數 (variable) s 的值是 2 ,因此程式最後會印出預設選項 -1 。
迴圈
在 for 迴圈中,如果不需要運用到取得的元素,控制變數 (control variable) 可以用底線代替,例如
for _ in range(10): print("*", end="") print() |
以上 for 迴圈的目的印出星號,不需要迴圈中從 range(10) 取得的值,因此控制變數用底線代替。
忽略的回傳值
如果函數 (function) 回傳序對 (tuple) ,也就是在 return 後用逗號依序分隔多個數值,例如
def my_function(): return 0, 0, 1, 1 _, b, _, _ = my_function() |
上面 my_function() 會回傳四個數字,因此要用序對變數,或是四個以逗號分開的變數接收回傳值,此時用後者如果有回傳值是不需要的,就可以用底線代替。
單元 44 - 函數與 return 陳述會詳細介紹如何定義函數。
類別中內建的方法
定義類別時,內建的方法名稱前後都是用兩條底線圍起來,例如建構子 (constructor) __init__() 如下
def __init__(self): pass |
因此自行定義的方法除非有需要,不然應該避免跟內建名稱採用類似的模式定義方法。
單元 54 - 類別會詳細介紹如何定義類別。
封裝
封裝是在屬性前加上連續兩條底線,如下屬性 (attribute) __c
def __init__(self): self.__c = 0 |
由於封裝也是用底線,因此命名屬性與命名其他識別字一樣,應該避免以底線開頭。
單元 61 - 封裝會詳細介紹封裝。