天天看點

#yyds幹貨盤點#python内置類型

以下部分描述了解釋器中内置的标準類型。

主要内置類型有數字、序列、映射、類、執行個體和異常。

有些多項集類是可變的。 它們用于添加、移除或重排其成員的方法将原地執行,并不傳回特定的項,絕對不會傳回多項集執行個體自身而是傳回 ​

​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

這些屬于布爾運算,按優先級升序排列:

運算 結果: 備注

​x or y​

if x is false, then y, else x (1)

​x and y​

if x is false, then x, else y (2)

​not x​

if x is false, then ​

​True​

​​, else ​

​False​

(3)

注釋:

  1. 這是個短路運算符,是以隻有在第一個參數為假值時才會對第二個參數求值。
  2. 這是個短路運算符,是以隻有在第一個參數為真值時才會對第二個參數求值。
  3. not

     的優先級比非布爾運算符低,是以 

    not a == b

     會被解讀為 

    not (a == b)

     而 

    a == not b

     會引發文法錯誤。

比較運算

在 Python 中有八種比較運算符。 它們的優先級相同(比布爾運算的優先級高)。 比較運算可以任意串連;例如,​

​x < y <= z​

​ 等價于 ​

​x < y and y <= z​

​,前者的不同之處在于 y 隻被求值一次(但在兩種情況下當 ​

​x < y​

​ 結果為假值時 z 都不會被求值)。

此表格彙總了比較運算:

運算 含意

​<​

嚴格小于

​<=​

小于或等于

​>​

嚴格大于

​>=​

大于或等于

​==​

等于

​!=​

不等于

​is​

對象辨別