內建型別¶
以下章節描述了直譯器中內建的標準型別。
主要內建型別為數字、序列、對映、class(類別)、實例和例外。
有些集合類別是 mutable(可變的)。那些用於原地 (in-place) 加入、移除或重新排列其成員且不回傳特定項的 method(方法),也只會回傳 None 而非集合實例自己。
某些操作已被多種物件型別支援;特別是實務上所有物件都已經可以做相等性比較、真值檢測及被轉換為字串(使用 repr() 函式或稍有差異的 str() 函式),後者為當物件傳入 print() 函式印出時在背後被呼叫的函式。
真值檢測¶
任何物件都可以進行檢測以判斷是否為真值,以便在 if 或 while 條件中使用,或是作為如下所述 boolean(布林)運算之運算元所用。
預設情況下,一個物件會被視為真值,除非它的 class 定義了會回傳 False 的 __bool__() method 或是定義了會回傳零的 __len__() method。[1] 如果其中一個 method 在被呼叫時引發例外,該例外將會被傳播,且該物件不具有真值(例如 NotImplemented)。以下列出了大部分會被視為 false 的內建物件:
定義為 false 之常數:
None與False任何數值型別的零:
0、0.0、0j、Decimal(0)、Fraction(0, 1)空的序列和集合:
''、()、[]、{}、set()、range(0)
除非另有特別說明,產生 boolean 結果的操作或內建函式都會回傳 0 或 False 作為假值、1 或 True 作為真值。(重要例外: boolean 運算 or 和 and 回傳的是其中一個運算元。)
Boolean(布林)運算 --- and, or, not¶
下方為 Boolean 運算,按優先順序排序:
運算 |
結果 |
註解 |
|---|---|---|
|
假如 x 為真,則 x,否則 y |
(1) |
|