Python學習進階教程(9)—布爾操作與比較操作

(本號正在連續推出以Python官網文檔為主線的完整的系統的學習Python的系列文章和視頻,感興趣的朋友們歡迎搜索關注。本文及後續文章如無特別聲明均以Windows平臺作為演示平臺,Python版本為:3.8.1)


注意:開始學習“Python學習進階教程”系列內容前須已經學習過“Python學習入門教程”系列內容】


布爾操作

Python支持的布爾運算符有or, and, not。如下表:

Python學習進階教程(9)—布爾操作與比較操作

解釋如下:

  • or是一個短路操作符,所以它只在第一個參數為假的情況下計算第二個參數。
  • and是一個短路操作符,所以它只在第一個參數為真時才計算第二個參數。
  • 優先級 not>and>or.
  • not的優先級比非布爾運算符低,因此not a == b被解釋為not (a == b),而a == not b是一個語法錯誤。

比較操作

Python中有8種比較操作。它們都具有相同的優先級(比布爾操作的優先級高)。比較是可以任意鏈接的,例如,x < y <= z等價於x < y和y <= z,只是y只被求值一次(在這兩種情況下,當發現x < y為假時,z根本不被求值)。下表總結了比較操作:

Python學習進階教程(9)—布爾操作與比較操作

解釋如下:

  • 不同類型(除數值類型外)的對象比較的結果總是不相等的。==操作符總是有定義的,對於某些對象類型(例如,類對象),它等價於is。和>=運算符只在有意義的場景下才定義,對這些運算符,當其中一個參數是複數時,會引發TypeError異常。
  • 除非類定義了__eq__()方法,否則類的不同實例通常被視為不相等。
  • 類的實例不能對於其他同類型的實例或其他類型的對象來排序,除非類定義了__le__ (), __gt__(),和__ge__()這些方法(一般來說,如果僅僅需要傳統含義的比較運算符的話,__lt__()和__eq__()就足夠了)。
  • is操作符和is操作符的行為是不能由用戶定製的。們還可以應用於任何兩個對象,而且從不引發異常。
  • 另外具有相同語法優先級的兩個操作(in和not in)可用於可迭代的類型或實現了__contains__()方法的類型。

【結束】

篇尾寄語:萬丈高樓平地起,是否具有紮實的基礎決定一個人能否走遠以及能走多遠。Python的學習也是同樣的道理!


分享到:


相關文章: