前幾天有看到一篇 Flask 開發(fā)團隊內(nèi)部 Python 編碼風格指南 ,里面有一段關(guān)于比較的規(guī)范覺得很有意思:

          任意類型之間的比較,使用 == 和 !=
          與單例(singletons)進行比較時,使用 is 和 is not
          永遠不要與 True 或 False 進行比較(例如,不要這樣寫:foo == False,而應(yīng)該這樣寫:not foo)
          自己在寫代碼的時候很少去關(guān)注變量的比較要如何實現(xiàn),基本都是直接使用 == 。今天就借此機會聊聊 Python 中的比較運算符。

          == 與 !=

          == 和 != 是等值校驗。

          這兩個運算符是我們最熟悉不過的比較運算符了。== 會根據(jù)魔術(shù)方法 eq 檢測左右兩側(cè)對象的值是否相等。

          例如 x == y ,其實背后的操作是 x.__eq__(y)。


          Python編碼風格篇:比較運算符
          is

          is 是身份校驗。它將檢測左右兩側(cè)是否為同一個對象。

          同一個對象必須滿足:

          * 值相同
          * 內(nèi)存地址相同
          因此就不難理解為什么 is 和 is not 用于單例(singletons)比較了。

          單例(singletons)是什么?

          單例是一種設(shè)計模式,應(yīng)用該模式的類只會生成一個實例。

          單例模式保證了在程序的不同位置都可以且僅可以取到同一個對象實例:

          如果實例不存在:會創(chuàng)建一個實例
          如果實例已存在:會返回這個實例
          not

          not 是 Python 中的邏輯判斷詞,常用于布爾型 True 和 False。

          not True -> False

          not False -> True
          邏輯判斷

          a = False

          not a 為 True

          if not a:

          pass
          判斷元素是否存在

          a = 100

          b = [1, 2, 3]

          元素 a 是否不在列表 b 中

          if a not in b:

          pass
          總結(jié)

          僅對值進行簡單比較時可以使用 ==/!= 操作符:

          a = 1

          b = 2

          if a == b:

          pass

          else:

          pass
          is 用于比較單例,例如比較 None:

          if a is None:

          pass

          if a is not None:

          pass
          如果涉及布爾值 True/False 的判斷,使用 not,不要直接與 True 或 False 比較:

          a = False

          b = True

          正確的寫法

          if not a:

          pass

          if b:

          pass

          錯誤的寫法

          if a == False:

          pass
          not 還可以用于判斷元素是否在列表/字典中存在。

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                亚洲精品一区二区三区蜜桃 | 欧美黑人玩白人巨大极品 | 蜜桃91精品秘 成人取精库 | 激情五月无码 | 做爱免费视频网站 |