以下部分描述了解釋器中内置的标準類型。
主要内置類型有數字、序列、映射、類、執行個體和異常。
有些多項集類是可變的。 它們用于添加、移除或重排其成員的方法将原地執行,并不傳回特定的項,絕對不會傳回多項集執行個體自身而是傳回
None
。
有些操作受多種對象類型的支援;特别地,實際上所有對象都可以比較是否相等、檢測邏輯值,以及轉換為字元串(使用 repr() 函數或略有差異的 str() 函數)。 後一個函數是在對象由 print() 函數輸出時被隐式地調用的。
邏輯值檢測
任何對象都可以進行邏輯值的檢測,以便在
if
或
while
作為條件或是作為下文所述布爾運算的操作數來使用。
一個對象在預設情況下均被視為真值,除非當該對象被調用時其所屬類定義了
__bool__()
方法且傳回
False
或是定義了
__len__()
方法且傳回零。 1 下面基本完整地列出了會被視為假值的内置對象:
- 被定義為假值的常量:
和None
。False
- 任何數值類型的零: ,
,0.0
,0j
,Decimal(0)
Fraction(0, 1)
- 空的序列和多項集:
,''
,()
,[]
,{}
,set()
range(0)
産生布爾值結果的運算和内置函數總是傳回
0
或
False
作為假值,
1
或
True
作為真值,除非另行說明。 (重要例外:布爾運算
or
和
and
總是傳回其中一個操作數。)
布爾運算 --- and
, or
, not
and
or
not
這些屬于布爾運算,按優先級升序排列:
運算 | 結果: | 備注 |
| if x is false, then y, else x | (1) |
| if x is false, then x, else y | (2) |
| if x is false, then , else | (3) |
注釋:
- 這是個短路運算符,是以隻有在第一個參數為假值時才會對第二個參數求值。
- 這是個短路運算符,是以隻有在第一個參數為真值時才會對第二個參數求值。
-
的優先級比非布爾運算符低,是以not
會被解讀為not a == b
而not (a == b)
會引發文法錯誤。a == not b
比較運算
在 Python 中有八種比較運算符。 它們的優先級相同(比布爾運算的優先級高)。 比較運算可以任意串連;例如,
x < y <= z
等價于
x < y and y <= z
,前者的不同之處在于 y 隻被求值一次(但在兩種情況下當
x < y
結果為假值時 z 都不會被求值)。
此表格彙總了比較運算:
運算 | 含意 |
| 嚴格小于 |
| 小于或等于 |
| 嚴格大于 |
| 大于或等于 |
| 等于 |
| 不等于 |
| 對象辨別 |